книги из ГПНТБ / Сарингулян, Э. В. Арифметические и логические основы цифровых машин учеб. пособие
.pdfпомимо знака мантиссы имеется еще знак порядка, изображе ние которого аналогично знаку мантиссы.
Например, двоичные числа +0,01101 и —0,10011 в естест венной форме с закодированными знаками представляются следующим образом: 0,01101 и 1,10011. Для двоичных чисел
+ 0,11001 ■10 '011 и —0,10001-10 100изображение в нормальной форме соответствует записи:
1,011 |
о,пот |
и |
одоо |
1,10001 |
порядок |
мантисса |
|
порядок |
мантисса |
со знаком |
со знаком |
|
со знаком |
со знаком |
Двоичные числа, записанные в естественной или нормальной форме, кодируются в ЭЦВМ в виде прямого, обратного или дополнительного кодов.
Изображение двоичного числа N в прямом коде [Л/|пр ос новано на представлении его абсолютного значения с закоди рованным знаком.
Если |
|
|
|
|
|
|
|
|
А '= + 0 , |
АД, АД 2АД, ... ЛДт , |
го [Л/|„р=0, АД, АД2АД3.••АДШ; |
||||||
если |
АД, АД, А Д ,... ЛДт , то |Л']пР— 1, АД, /V. 2АД3.. •ЛДЛ1, |
|||||||
Л '- — 0, |
||||||||
где ЛД,, ЛЛ.-'J> * " |
» ЛД |
—двоичные цифры. |
|
|||||
В общем случае формула для образования прямого |
кода |
|||||||
двоичного числа N имеет вид Г1] |
|
|
|
|
||||
|
|
|
.V |
при |
V - 0, |
|
|
|
|
1 |
lMl> | 1 — |
у V |
п р и |
Л Д - Д 0 . |
|
|
|
Пример. N = —0,11101, |
тогда |
[Л']пр = |
1 — (— 0,11101) = |
|||||
= 1, 11101, |
|
|
|
|
|
0, 10101. |
|
|
|
;V = + 0,10101, тогда |
[jVJпр = |
|
|||||
Нуль в прямом коде, как это следует из формулы |
(2.1), |
|||||||
имеет двоякое изображение: |
|
|
|
|
|
|||
|
N = + 0.00...0 |
[А ,г|пр — 0,00 |
• ■ ■0 |
|
||||
|
N = —0,00...0 |
[/V]„p - |
1,00 |
. • |
0 |
|
Прямой код в цифровых машинах используется во внешних устройствах, для хранения положительных и отрицательных двоичных чисел в запоминающем устройстве, а также для сло жения положительных чисел и в большинстве случаев для вы полнения операции умножения в арифметическом устройстве,
20
Однако реализация операций сложения чисел разных зна ков, вычитания и деления в прямом коде потребовала бы зна чительного усложнения структуры арифметического устройст ва машины, так как при этом действия над цифровыми и зна ковыми разрядами были бы неаналогичными. Поэтому в АУ прямой код для кодирования отрицательных чисел при выпол нении операций не используется, кроме действия умножения.
Для упрощения структуры машины отрицательные пра вильные дроби, представленные в двоичной системе, кодируют ся в виде дополнений до 10 или до 10— 10“ "г, гд е т —количест во разрядов, 10 — основание двоичной системы счисления. Код, образованный дополнением до 10, называется дополнительным кодом. Второй вид дополнения носит название обратного кода. Использование этих кодов позволяет заменить операцию вы читания сложением, а операцию деления свести к последова тельности действий сложения и сдвигов. В результате основ ным блоком арифметического устройства определяется сумма тор, в котором цифровые разряды чисел складываются анало гично знаковым.
Для получения дополнительного или обратного кода отри цательных мантисс используются следующие зависимости:
или |
[ л г 0п = 10 + W |
(2.6) |
|||
[Л/]обР = 10— 10~m+ ;V, |
(2.7) |
||||
|
|
||||
где |
;V = — 0, AAj Лй_2. • •N - m. |
|
|||
|
Примеры: 1 . N = —0,11001, тогда [Л/]доп = 10 + (—0,110001 ) = |
||||
= |
1,00111 |
|
|
||
и |
|
[yV]o6p =10 — 0,00001 + |
(—0,11001) = |
1,00110. |
|
|
|
||||
|
2. |
Л7=—0,00011, тогда |
[УУ]Д0В= Ю + |
(—0,00011) =1,11101 |
|
и |
[TVJoop =10 — 0,00001 + (—0,00011) = 1,11100. |
||||
|
Из приведенных примеров можно вывести следующие пра |
||||
вила образования кодов: |
|
отрацительного |
|||
|
1) |
для получения дополнительного кода |
числа необходимо в знаковый разряд записать единицу, а все цифры разрядов заменить обратными значениями и к младше му разряду прибавить единицу;
2) для получения обратного кода отрицательного числа необходимо в знаковый разряд записать единицу, а все цифры разрядов заменить обратными значениями.
Положительные числа своего изображения в рассмотрен ных кодах не меняют.
Для образования дополнительного или обратного кодов от рицательных целых чисел могут быть использованы приведен-
21
пые выше правила. Тогда дополнения будут соответственно образованы до 10" или до 10” — 1, где п— количество разрядов целого числа.
Пример. N = — 101, тогда
ГЛЧдо„ = 10000 + |
( - 101) = 1, 011 |
|||
|
|
знак цифровые |
||
и |
|
разряды |
||
+ |
(— 101) =_1, |
010 |
||
[/Vjo6p = 10000-1 |
||||
|
|
знак цифровые |
||
|
|
|
разряды |
|
Подобные преобразования |
выполняются |
над порядками, |
которые в машинах с плавающей запятой представлены целы ми числами. Использование дополнительного или обратного кодов целых чисел позволяет производить операции сложения или вычитания над порядками в сумматоре арифметического устройства, аналогичные действиям над мантиссами чисел.
Для образования прямого кода отрицательного числа из до полнительного или обратного кода применяются те же прави ла. Этот перевод необходим в случае передачи отрицательных результатов на хранение в запоминающее устройство или при выводе во внешние устройства машины.
Рассмотрим, как суммируются числа в дополнительном и обратном кодах.
Замена вычитания чисел в прямом коде операций сложе ния в дополнительном или обратном кодах позволяет сумми ровать знаковые разряды аналогично цифровым, а в случае образования единицы переноса из цифровых разрядов числа в знаковые последняя суммируется со знаковыми разрядами суммы. Однако операции с единицей переноса из знакового разряда суммы для дополнительного и обратного кодов раз личны.
При сложении чисел, по абсолютному значению меньших единицы, в дополнительных кодах результат можно предста вить в виде
[ + 'V .U + [ - Л'21доп = Л/, + [10 + ( - /V',)] = 10 -|- (Л^ - М,).
При этом возможны случаи АО—А^^-О или —N2< 0. Если АО—N2> 0, то результат суммирования положителен, и перевод из дополнительного кода не требуется, поскольку он соответст вует прямому коду положительного числа, т. е. [Ny—N2]np. Единица второго разряда числа 10 является единицей перено са из знакового разряда суммы и в дополнительном коде не учитывается:
[ +■ Af,]lon + [ — Л^до,, — 10 (Ay -j- /V,) — [/V, А'2!Пр-
Если Ni—N2<0, то результат суммирования отрицателен и за писан в дополнительном коде:
[+ 4 W + [ - 4 U = 10 -f-1— ( 4 - /V2)j = [/V, - 4 U n -
Для получения прямого кода результат необходимо преобра зовать.
Примеры на сложение чисел в дополнительном коде:
1. |
/^ |
= |
0,11001, |
14]»о„ = |
0,11001 |
|
|
|
4 |
= |
— 0,00101, |
[4 U |
= |
+ |
|
|
1,11011 |
|
|||||
|
|
IЛ/ХI > I А^21 [4 ]доп + [ 4 ] доп = |
10,10100 = |
0, 10100= |
|||
|
|
|
|
«=-------------------------1 |
= [ 4 |
+ /V2]np |
|
|
|
|
Единица переноса |
|
|
|
|
|
|
|
из энакооого разряда |
|
|
|
|
|
|
|
суммы не учитывается |
|
|
|
|
2. |
4 |
= 0 , 1 0 1 1 1 , |
[ 4 ]доп = |
0 ,1 0 1 1 1 |
|
||
|
4 |
= - o,i юн, |
['4 ] д о п = |
1 ,0 01 0 1 |
|
||
|
14 |
1< I /V21 |
[4 U + [ 4 U = i,11100 = [4 |
-ь лдДОП, |
|||
|
|
|
|
[4 + 4 U = 1,00100 |
|
||
3. |
/V, = |
— 0,10011, |
[АД]доп - |
1,01101 |
|
||
|
4 |
= — о,оюоо |
[4 ]доп= |
+ |
|||
|
1,11000 |
|
|||||
|
|
|
|
[4 U + [4 U .= i1,00101 = [ 4 + 4 U |
|||
|
|
|
из |
Единица переноса |
|
|
|
|
|
|
знакового разряда |
|
|
|
|
|
|
|
суммы не учитывается |
|
|
|
|
|
|
|
[ 4 |
4 - Л/2]пр = 1 ,1 1 0 1 1 . |
|
|
|
При сложении чисел, по абсолютному значению меньших единицы, в обратных кодах результат можно представить в виде
[ + 4 ] о б р + [ - 4 ] о б Р= 4 + [ 1 0 - 1 0 " Ч ( - 4 ) 1 =
= ю — ют + (4 — 4)-
При этом возможны случаи N\—N2> 0 или N\—N2< 0.
В первом случае получается результат Ni—N2 в прямом коде, который отличается от правильного результата на едини цу младшего разряда (— 10~"г)- Поэтому для коррекции значе ния суммы единица переноса из знакового разряда результата не отбрасывается, а прибавляется к младшему разряду суммы
23
в отличие от слолсения чисел в дополнительном коде. Такая коррекция носит название циклического переноса. Результат суммирования молено записать
I f АМобр-f- [ - Na\nlip = 10 — 10-m + (/V, — AT) = 10~m -
(/V, - N I) = [ N X- N 3]np.
Во втором случае результат N\— Nz получается отрицательным г>обратном коде
[+ N , U P-1- [ -yV 2]ooP = 1 0 - НГИ -1 [ - (А/, — iV2)| =
= Н Г т + [ - ( Л / , — АТ)] - [Л/, — А/а]пбР;
и для вывода его из арифметического устройства необходим перевод в прямой код.
Примеры на сложение чисел в обратном коде
1. |
/V, = |
0, 11001, |
|
[ААЬбр = |
о, 11001 |
||
|
|
|
|
|
|
|
_ 1 |
|
/Va= — 0,01010, |
|
liV2loop = 1,10101 |
||||
|
! Л', | |
|/V,! |
[,v,]06p + |
[^ 21обр== 10,01110= 0,01111 = |
|||
|
|
|
|
4 A V ; M ,]np |
I |
f |
|
|
|
|
|
|
Единица |
циклического переноса |
|
|
|
|
|
|
из знакового разряда суммы |
||
|
|
|
|
|
прибавляется к младшему разря |
||
|
|
|
|
|
|
|
ду суммы |
2. |
iV, = |
0,01101, |
|
[АМобр - - 0,01101 |
|||
|
;Va= |
— |
0,10111, |
|
[Аг2]обр = |
+ |
|
|
|
1,01000 |
|||||
|
| .V, | <Т | АА | |
[ЛГ[ ],,бр+ [А^г]обр— |
1,10101 = [/V, +/V,]n6p, |
||||
|
|
|
|
[/V, + Л/2]пр = |
1,01010. |
||
3. |
А/, = - 0 , 1 1 0 1 1 , |
|
[ЛА,]овр = |
1,00100 |
|||
|
|
|
|
|
|
|
_1_ |
|
Wa= — 0,00001, |
|
[yV2J06p = |
1,11110 |
|||
|
|
|
|
[/V, ]обр + |
[М ]о6р= |
11,00010 = 1,00011 = |
|
|
|
|
, |
= [Л ', + Л/,]о6р |
I |
t |
|
|
|
|
|
|
Единица циклического переноса нз |
||
|
|
|
|
|
знакового |
разряда суммы прибавля |
|
|
|
|
|
|
ется |
к младшему разряду суммы |
[ЛА, -ь ЛА31пр = Ы 1100.
При сложении чисел в обратном коде количество цифровых разрядов слагаемых должно быть одинаковым. Выравнивание достигается добавлением нулей к слагаемому в прямом коде,
24
имеющему меньшее тесло разрядов. В противном случае ре зультат суммирования чисел в обратном коде получается ис каженным.
Анализ рассмотренных примеров позволяет сравнивать осо бенности сложения чисел в дополнительном и обратном кодах
иустановить целесообразность их применения.
Варифметическом устройстве с сумматором последова тельного действия применение обратного кода не рационально, так как при образовании единицы циклического переноса мо жет оказаться необходимым повторить сложение по всем разрядам суммы. В данном случае использование дополни тельного кода удобнее. В устройствах параллельного действия образование обратного кода инверсией разрядов прямого кода и учет переноса из знакового разряда суммы не вызывает за труднений [1].
При сложении чисел одинаковых знаков результат по мо дулю может оказаться больше единицы, т. е. произойдет вы ход старшего разряда суммы за допустимые пределы пред ставления чисел при условии, что числа представляются в ма шине правильными дробями. При автоматическом режиме ра боты вычислительная машина должна регистрировать пере
полнение разрядной сетки, так как сумма получает искажен ное значение. Для этой цели под изображение знака ,в сумма торе ЭЦВМ отводят для двоичных разряда. Форми руются так называемые модифицированные прямые, допол нительные и обратные коды. Например, для N = —0,10001 мо дифицированные коды будут записаны следующим образом:
[Л/]“р = 11,10001; [А'гдоп]м= |
11,01111; |
[/Vj“6p - 11,01110; |
для N = 0,11101- [W]“p = |
[А^доп - № |
р = 00,11101. |
Сложение чисел в модифицированных кодах выполняется аналогично по разобранным правилам. Единица переноса из второго знакового разряда в модифицированном дополнитель ном коде не учитывается, а в модифицированном обратном ко де прибавляется по цепи циклического переноса к младшему разряду суммы.
Примеры на сложение чисел в модифицированных кодах
1. ;V ,= -0,01001, |
М ]? оп = |
00,01001 |
/V ,= — 0,10111. |
|
+ |
[yv2] - on = |
1 1 ,0 1 0 0 ] |
IА , |< |yv21 [;V, ]Д"0П+ [М ]Д»0П= 11, 10010= W + W 2] - n’
[Wx + W2]“p= 11,01110.
25
N i = - 0 , 1 0 0 0 1 , |
[ / V , ] “ = 1 1 , 0 1 1 1 1 |
|
|
||||
Д/2 = — 0 ,0 1 1 1 0 . |
ГЛ^2]? |
= 1 1 , 1 0 0 1 0 |
' |
|
|||
|
|
|
^ДОП |
' |
|
|
|
|Л\| > |
| /va | |
ГЛЛ1" + [ i V 2l“ = 1 1 1 , 0 0 0 0 1 = |
1 1 ,0 0 0 0 1 = |
||||
|
|
до" . |
доп |
1 |
= [ ^ |
, + |
№ „ |
|
|
Единица переноса из старшего знакового |
|||||
|
|
риэряда суммы не учитывается |
|
||||
|
|
№ |
^ = = 1 1 , 1 1 1 1 1 . |
|
|||
= 0 ,0 1 0 0 1 , |
№ |
р = 0 0 ,0 1 0 0 1 |
|
|
|||
Л^з = — 0 , 1 1 0 0 1 , |
№ р = 1 Ь О о п о |
|
|
||||
1-V, 1 < 1Л '2 1 |
[ Л М ” 0Р -ь № |
Р= и , 0 1 1 1 1 = [ м + № Р- |
|||||
|
|
[ л г1 + № |
Р = п , 1° о о о . |
|
|||
, 4 ' , = — 0 ,1 0 1 0 1 , |
[ ^ 1 ^ = 1 1 , 0 1 0 1 0 |
|
|
||||
7 V , = — 0 ,0 1 0 0 0 |
№ р = 1 Ы 0 П 1 |
|
|
||||
№ |
р+ № |
р= 111,00001 = |
11,00010= М |
+ М2]-6р |
|||
|
|
I_______ |
t |
|
|
|
|
|
Единица переноса из старшего знакового разряда |
||||||
|
суммы прибавляется к младшему разряду резуль |
||||||
|
|
|
тата |
|
|
|
|
[ Л ^ л у « р = 1 1 , 1 1 1 0 1 .
Применение модифицированных кодов позволяет устано вить признак переполнения разрядной сетки машины, состоя щий в том, что знамения знаковых разрядов результата не совпадают: формируется сочетание двоичных цифр 01 при пе реполнении разрядной сетки от сложения положительных чи сел (положительное переполнение) либо 10 при сложении от рицательных чисел (отрицательное переполнение) .
Примеры на переполнение разрядной сетки при сложении чисел в модифицированных кодах
1. /V, = -0 ,1 1 0 0 1 , |
№ |
„ = |
11,00111 |
Л'2— 0,01111 |
№ |
„ „ = |
4,10001_____________ |
№„ + № „ = 1ю п 1000= 10, 1ю оо
|
Значения знаковых |
— |
разрядов не сов- |
падают |
|
Не учитывается |
|
Результат сложения 10,11000 искажен. |
|
26
2. yV1==— 0,01111
/V a = - 0 , 1 1 0 0 1
[/V:]o6p + |
г'V2]?6p = 110, 101 10 -= |
10,101 1 1 |
|
|
f |
A |
|
|
|
Значения знаковых |
|
|
Циклический |
разрядов |
|
|
перенос |
|
не совпадают |
Результат сложения 10,10111 искажен. |
|
|
|
3 . N , = 0 , 1 1 0 0 0 |
W t t p = 0 0 . 1 1 0 0 0 |
|
|
/V, = 0,01001 |
|
|
|
Значения знаковых разрядов не совпадают
Результат сложения 01,00001 искажен.
§ 2.4. Реализация арифметических операций
Сложение в машинах с фиксированной запятой
Для выполнения операции сложения числа, хранящиеся в прямом коде в запоминающем устройстве, пересылаются в арифметическое устройство. Отрицательные числа перед пода чей на сумматор преобразуются в дополнительный или обрат ный код в зависимости от принятого кода в машине. Призна ком отрицательного числа для формирования дополнительно го или обратного кода в машине служит значение знакового разряда, равное единице. Положительные числа своего изоб ражения не меняют, и в их знаковом разряде стоит код 0.
Поскольку при суммировании одинаковых по знаку чисел не исключено переполнение разрядной сетки, то под изображе ние знака числа в сумматоре АУ отводится два двоичных раз ряда. Код числа на сумматоре переводится в соответствующий! модифицированный код.
После выполнения операции сложения чисел в модифици рованных кодах производится анализ полученного результата в сумматоре на выход за пределы допустимых разрядов (ана лиз на переполнение). Схема, реализующая этот анализ, выра батывает управляющий сигнал, носящий название «сигнал ф». Пели значения знаковых разрядов суммы совпадают, сигнал ф равен нулю, что является признаком отсутствия переполнения.
Если значения знаковых |
разрядов суммы не совпадают, |
||
схема |
вырабатывает сигнал |
переполнения ф = 1 . |
По сигналу |
Ф=1 |
выполняется либо соответствующая коррекция вычисли |
||
тельного процесса, либо останов машины. |
_ |
27
Знак результата определяется по состоянию старшего (вто рого) знакового разряда и фиксируется сигналом соПри со = 1 результат на сумматоре отрицательный, при со = 0 сумма имеет положительный знак.
Примеры на выполнение операции сложения
1- [с\'1jnp = 0,00111,1 КОдЫ чисел в запоминающем устрой- [/V,]„p =0,01001 J-тае
Сложение чисел в модифицированном прямом коде в сумматоре арифметического устройства
[ ^ 1 ^ = 0 0 ,0 0 1 1 1
+
[/У 3]"„ = 0 0 ,0 1 0 0 1 _____________________
МЙр + I'V2]“p = 00,10000 = [N, + /V2]“p
= 0 результат положительный
I —> ® = 0 -> переполнения пет
2. [jVJnp— 0,01101 (коды чисел в запоминающем устрой- [/V,]np =0,11001 )стве
Сложение чисел в модифицированном прямом коде в сумматоре арифметического устройства
[ yV iln P ~ 0 0 ,0 1 101 _
[ ^ ] ц"р = 00,11001 1
[;V,l“p + [jV,]”p = 01,00110 -> результат искажен
ш = 0
*w= 1-> переполнение
3.[jV,]nP= 0,10111 (коды кисел в запоминающем устрой- [yV2]Iip= 1,01001 Jстве
Сложение чисел в модифицированном дополнительном коде в сумматоре арифметического устройства
В Д оп = 0 0 , 10111
[ « |
оп = |
11,10111 |
: |
[/V, ]“оп + 1^ |
= |
100,01110= 00,01110= [N, + л /2]" |
|
|
|
|
пр |
не учитываетсяI |
J ^ I » = 0 |
||
|
|
|
ср = 0 |
28
[-'V,]np — 1,И 001 |
|Коды чисел в запоминающем устрой- |
[ЛЧпр = 0,01101 |
(стае |
Сложение чисел в модифицированном дополнительном коде в сумматоре арифметического устройства
l'V|Ji‘on= 11.00111
[Л ^ оп = |
00,01101 ^ |
[ ^ t n + [ ^ ] , MOn= |
n >10100 = [^ 1+ ^ i!]“ep; [N, 4-,Vs)np= l ,01100. |
|
•О) =1 |
’ср : о
5.[Лд|„р — 1,00011 ] коды чисел в запоминающем устрой- [/V,]np = 1,10001 |стве
Сложение чисел |
в модифицированном дополнительном коде в сумматоре |
|
|
|
арифметического устройства |
[Л^]д0П= 11,11101 |
||
[/V2]“ „ =11,01111 |
||
*■ |
* i j l ОП |
} |
№„ + [л/2];‘оп= 1п ,01100= 11,011О С И Л И Л '* ,
— 1 |
! - > « ) = ] |
[A',+-/V2]ao |
1, 10100. |
не учитывается |
I |
|
|
|
U ?==0 |
|
|
6- [^ ,]Пр — 1,10011 | коды |
чисел в |
запоминающем |
устрой- |
[/V2]np = 1,10001 )стве |
|
|
|
Сложение чисел в модифицированном дополнительном коде |
в сумматоре |
|
|
арифметического устройства |
|
М Йо |
11,01101 |
|
+ |
|
|
|
|
|
|
11,01111 |
|
[^ilnon + [Л/,1”оп = 110, 11100= 10,11100 -^результат |
искажен |
]д:>ш=1 не учитывается I
-> <Р= 1-> переполнение
7- [/V.]np =0,10111 ) коды чисел в запоминающем устрой- [W2]np = 1,01001 (стае
Сложение чисел в модифицированном обратном коде в сумматоре арифметического устройства
№ |
Р = |
о о ,ю 1и , |
|
[^ 21“6Р= |
11,10110 |
|
|
№ „ + [N,]- |
= |
100,01101 = |
00,01110 = [7V, + л у -р |
|
|
Циклический |
_ > СО : ■о |
|
|
перенос |
29 |
!“►СО; о