Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Сарингулян, Э. В. Арифметические и логические основы цифровых машин учеб. пособие

.pdf
Скачиваний:
8
Добавлен:
19.10.2023
Размер:
3.96 Mб
Скачать

помимо знака мантиссы имеется еще знак порядка, изображе­ ние которого аналогично знаку мантиссы.

Например, двоичные числа +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, то результат суммирования положителен, и перевод из дополнительного кода не требуется, поскольку он соответст­ вует прямому коду положительного числа, т. е. [NyN2]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.

В первом случае получается результат NiN2 в прямом коде, который отличается от правильного результата на едини­ цу младшего разряда (— 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

Л'20,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

!“►СО; о

Соседние файлы в папке книги из ГПНТБ