Файл: Дроздов Е.А. Многопрограммные цифровые вычислительные машины.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.04.2024
Просмотров: 281
Скачиваний: 0
(2 .12) будут кодироваться положительными числами от 0 0 0 0 0 0 0 ’ до 111111Г. Коды отрицательных порядков будут иметь цифру 0 в старшем разряде 7-разрядного двоичного кода, положительных — цифру 1; нулевому порядку будет соответствовать код 1000000’. Во
избежание путаницы |
смещенный порядок называют х а р а к т е |
р и с т и к о й числа. |
Так как все характеристики представляются |
положительными числами, их сравнение выполняется очень просто: из характеристики первого слагаемого, например, всегда вычи тается характеристика второго слагаемого.
Сучетом вышеизложенного число, например, —32756 в форме
сплавающей запятой в виде 32-разрядного двоичного кода может быть представлено, как показано на рис. 2.2. Мантисса изображе-
днак |
числа |
I |
I I I I I I Г*т | I | I | I I Г"1 I Г-| I г----- |
1 1 0 0 0 1 0 1 0 1 1 1 11 11 11 1 1 0 1 0 0 • • • 0 |
|||||
I i i i i i i i i i |
I I 1 |
i i i I i i i 11. i l — |
31 |
||
0 1 2 3 4 5 6 7 8 |
11 12 |
1516 |
1920 |
2324 |
|
Характеристика |
|
Мантисса |
|
|
|
Рис. 2.2. Пример машинного кода числа |
в форме с плаваю, |
||||
|
щей запятой |
|
|
|
на нормализованной в шестнадцатеричной системе счисления, ха рактеристика р* = 5+ 26. Весь код на рис. 2.2 в шестнадцатеричной системе счисления можно записать как С5 7FF400.
Рассмотренное выше представление двоичных чисел со знаками называется п р я м ы м м а ш и н н ы м к о д о м или просто п р я м ы м кодом. В этом коде значащая часть в виде абсолютного значения двоичного числа и код знака (плюса или минуса) поме щаются в соответствующие позиции разрядной сетки. Формула для
образования |
прямого кода [Л]цр |
правильной двоичной |
дроби |
|
Л = ± 0 , |
имеет вид |
|
||
|
I |
А, |
если А ^ 0, |
(2.13) |
|
И ]пр = )1 _ |
д |
если A < Q |
Например:
А= +0,101011 [Л]пр = 0’.10Ю11;
Л= -0,011011 -> [Л]пр= 1 — (—0,011011) = Г.ОПОИ.
Прямой код [Лц]пр целого числа Al1 = ат_^ат_2. . .а ха0 полу
чается по формуле |
|
|
| я (0) -ф Лц, |
если Лц |
0, |
1 10я-1 - Л ц, |
если Лц< |
(2.14) |
0, |
где 10 — два; я — количество позиций в разрядной сетке;
42
« {0} — «-разрядный код нуля; |
|
|||
Лц< 1 0 л-1- 1 , т. е. / « < « - 1. |
|
|||
Например: в разрядной сетке с « = 5 |
|
|||
Л“ = |
+101 [Лц]пр = |
00000 + |
101 = 0.0101’; |
|
Лц = |
—110-^- [Лц]пр= |
104 — (— 110) = 1.0110’. |
||
Из (2ЛЗ) и (2.14) |
следует, что в обоих случаях + 0 и —0 в прямом |
|||
коде изображаются как |
|
|
||
Л = |
+ 0 ,0 0 0 ... 0 |
[Л]пр = |
О’.ООО... 0, |
|
Л = |
- 0 ,0 0 0 ... 0 |
[Л]пр = |
l’.OOO... 0 |
|
и |
|
|
|
|
л ц = |
+ 0 0 0 0 ... О |
[Лц]пр = |
0.000... О’, |
|
л ц = |
- 0 0 0 0 ... О |
[лц]пр = |
1.0 0 0 ... О’. |
Прямой код используется для представления положительных двоичных чисел при выполнении операций в арифметических устройствах, для хранения положительных и отрицательных чисел в запоминающих устройствах, а также в устройствах ввода и вывода.
Для представления отрицательных чисел при выполнении опе раций в арифметических устройствах прямой код обычно не при меняется. Это объясняется тем, что для упрощения конструкций арифметических устройств в цифровых вычислительных машинах все арифметические операции, как правило, сводятся к сложению (операция вычитания) или к сериям сложений и сдвигов (опера ции умножения й деления). Для этой цели отрицательные двоич ные числа в арифметических устройствах представляются в так называемом д о п о л н и т е л ь н о м или о б р а т н о м коде .
Формулы для образования дополнительного и обратного кодов отрицательных двоичных чисел |Л |< 1 имеют вид
Дополнительный код |
Обратный код |
|
[Л]доп = 10 + |
Л, |
[Л ]обр = Ю -10 -г + Д (2.15) |
где Л = — 0, а - ^ - г й - з ... |
а_/, |
|
10 — два. |
|
|
Например: А = —0,1011, тогда
И ]доп = Ю + (-0,1011) = Г.0101; [Л]о6р = 10 - 0,0001 +
+ (-0,1011) = 1’.0Ю0.
Для целых двоичных чисел, представляемых в «-разрядной сет ке, дополнения берутся соответственно до 10п или 10"—1. Поэтому для целых чисел
Дополнительный код |
Обратный код |
|
[Дц]доп=10', + Дц> |
[Лц]обр= 1 0 п- 1 + Л ц, |
(2.16) |
где 10 — два.
43
Например: Лц=1011, п — 6, тогда |
|
И д о п = |
1000000 + ( - 1 0 1 1 ) = 1.10101' |
и |
|
и ц]обр = |
п и п + ( - 1 0 1 1 ) = 1.1оюо’. |
Таким образом, правила образования дополнительного и обрат ного кодов состоят в следующем:
— для образования дополнительного кода отрицательного двоичного числа необходимо в знаковом разряде поставить
единицу *, во всех цифровых |
разрядах единицы заменить нуля |
ми, а нули — единицами, и к |
младшему разряду прибавить еди |
ницу; |
|
— для образования обратного кода отрицательного двоичного числа необходимо в знаковом разряде поставить единицу, в циф ровых же разрядах лишь единицы заменить нулями, а нули — еди ницами.
Необходимо иметь в виду, что для образования дополнительного и обратного кодов целых чисел так же, как и прямого, необходимо знать размер разрядной сетки (количество позиций п). Это опре делит относительное расположение знакового разряда (крайнего левого) и значащей части, нули между которыми необходимо учи тывать при переводе вручную отрицательных чисел в дополнитель ный и обратный машинные коды. В машине это относительное рас положение учитывается автоматически, поскольку в ней всегда осуществляется перевод из прямого кода, уже размещенного в разрядной сетке.
Прямой код отрицательного числа получается из дополнитель ного или обратного кода по тем же правилам, которые служат ддя
нахождения дополнительного и обратного кодов. |
> |
Замена вычитания двоичных чисел А\—Аг (или |
в прямых ко |
дах Hi]np—ИгЬр) сложением с дополнениями |
[Лi]np + [—Л2]доп |
или [Лi]np+(—Лг]обр позволяет оперировать со знаковыми разряда ми так же, как и с цифровыми. При этом знаковые разряды скла дываются так же, как и значащие разряды числа, а перенос из старшего значащего разряда обычным порядком подсуммируется к значению суммы знаковых разрядов. Однако правила учета пе реносов (если они возникают) из знакового разряда суммы и, сле довательно, получение правильного результата для дополнитель ного и обратного кодов различны:
—при использовании дополнительного кода единица переноса из знакового разряда не учитывается;
—при использовании обратного кода единица переноса из зна
кового разряда прибавляется к младшему разряду суммы (осуще ствляется так называемый циклический перенос).
* При переводе из прямого машинного кода эта единица в знаковом разря де уже имеется и она сохраняется.
44
Пример 2.4. Сложить с использованием дополнительного и обратного кодов числа At = +0,1011 и Л2 = —0,0101.
Hi]nP= |
ОМОН |
Milnp = |
ОМОН |
И 2]доп = |
1 М0 1 1 |
И 2]обр = |
1М010 |
Мх]пр + Иг]доп = |
ж О’.ОПО = |
\Ajr-Л2]пр. Циклический |
O’.OIOI |
|
Т |
перенос |
— > +1 |
|
|
|
|
Единица переноса |
[Л1]пр Н~ [^2]обр — О’.ОПО — [j4j—^ г]пр" |
||
из знакового разряда |
|
|
|
не учитывается |
|
|
Так как Л i> Л2, то результат в прямом коде
[Л] — Ла]пр = О’.ОНО, откуда At — ,42 =+0,0110.
Пример 2.5. Сложить с использованием дополнительного и обратного кодов
числа Л1= + 0 , 0 1 1 1 и Л2 = —0 ,1 0 1 1 .
И .]пр= |
0 ’.0 1 1 1 |
И ,]пр= |
|
[Л 1доп = |
Г-0 101 |
[Л2]обр = |
+ |
0 ’ .0 1 1 1
1 ’.0 1 0 0
[■^1]пр+[-^2]доп= 1M100= [j4i — >12]доп- Hi]np+[-^2]o6p= l ’-lOl 1 = [j4t—Л2]06р.
Так как Ai<A2, то результат получился соответственно в дополнительном и
обратном кодах. Пользуясь правилами преобразования в прямой код, находим И ,-Л 2]„р=Г.0Ю0 и Л,—Л2= —0,0100.
Выполняя операции над числами |Л |< 1 с использованием об ратного кода необходимо помнить, что слагаемые должны иметь одинаковое количество цифровых разрядов. Если это требование не выполняется, то результат сложения с применением обратных кодо% оказывается искаженным. В связи с этим до перевода сла гаемых в обратные коды необходимо выравнять количества цифро вых разрядов их прямых кодов. Выравнивание производится при писыванием справа соответствующего количества нулей к прямому коду слагаемого, имеющего меньшее количество разрядов. В маши нах это условие выполняется автоматически.
При использовании обратного кода следует иметь также в виду, что в этом случае при алгебраическом сложении всегда возникает отрицательный нуль Г.111...1, соответствующий —0,000... 0. То же самое имеет, место и при действиях с целыми числами. Это об стоятельство необходимо учитывать, например, при сравнении с положительным нулем, не являющимся результатом арифметиче ских операций.
Для выполнения арифметических действий над целыми двоич ными числами, выравненными по младшим разрядам, числа также должны иметь одинаковую длину в разрядной сетке. Их коды зна ков должны располагаться в одинаковых разрядах, причем если для представления отрицательных чисел используется обратный код, то знаки должны быть в разрядах, откуда осуществляется циклический перенос.
45
Пример 2.6. Сложить с использованием дополнительного и обратного кодов
+1011011 и ^ 2 = —111 1.
К] пр= 0.101101Г
+К ] доп = + Ы110001’
К ] пр + К Ц]доп= Ж0.1001100’ = [Л“-Л 2ц] пр.
К ] „ р = |
0 .1 0 1 1 0 1 Г |
К ц]обр= + 1 .1 1 1 0 0 0 0 - |
|
—0.1001011- |
|
I------- |
>+ 1 |
И"]пр + И ]о б Р = |
0 .1 0 0 1 1 0 0 - = [Л«—Л^]пр; |
Л“ — Л" = |
+1001100. |
Процессы выполнения арифметических действий часто органи зуются таким образом, что отрицательные числа, участвующие в них, хранятся в запоминающих устройствах в виде дополнений. В этих случаях перед операцией сложения анализ знаков исходных чисел становится ненужным.
При операции сложения двоичные коды всегда просто склады ваются. Если же требуется произвести операцию вычитания, то для кода вычитаемого всегда сначала определяется дополнение, кото рое затем прибавляется к уменьшаемому.
При сложении чисел меньших единицы в машине могут полу чаться числа по абсолютной величине большие единицы.
Выход результата операции за допустимые пределы представ ления чисел приведет к ошибкам в последующих вычислениях, если не принять надлежащие меры. Поэтому случаи переполнения дол жны немедленно обнаруживаться. Для этого в машинах приме няют так называемые м о д и ф и ц и р о в а н н ы е прямой, допол нительный и обратный коды, которые отличаются от рассмотрен ных. выше простых кодов тем, что знаки чисел изображаются не одним разрядом, а двумя. Например, для Л==—0,1011 модифици рованные коды будут иметь вид [Л]“р= 11.’1011; [Д]д0П= ll.’OlOl
[Л]«р = 1Г.0100, а для А = +0,0110 — [Л]“р = 00’.0110.
Сложение чисел в модифицированных кодах производится так же, как и в обычных. Переносы между знаковыми разрядами учи тываются точно так же, как и переносы из старшего цифрового разряда в знаковый. Единица переноса из старшего знакового раз ряда в модифицированном дополнительном коде отбрасывается, а в модифицированном обратном коде передается в младший цифро вой разряд (осуществляется циклический перенос).
Признаком переполнения разрядной сетки в модифицирован ных кодах служит либо появление в знаковом разряде суммы со-
46