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

книги из ГПНТБ / Каган Б.М. Цифровые вычислительные машины и системы учеб. пособие

.pdf
Скачиваний:
97
Добавлен:
27.10.2023
Размер:
29.24 Mб
Скачать

дится к арифметическому сложению. В результате уп­ рощаются арифметические устройства машин.

Для представления двоичных чисел в машине при­ меняют прямой, обратный и дополнительный коды. Во всех этих кодах предусматривается дополнительный раз­

ряд

для представления

знака числа, причем

знак

«+»

кодируется цифрой 0, а знак «—» — цифрой

1.

Положительные числа

при прямом, обратном

и до­

полнительном кодах имеют один и тот же вид, а отрица­ тельные — различный.

Прямой код (G)np двоичного числа G=

+ 0, уиУ2,—\'п

(уі= 1 или 0) определяется условиями:

 

 

G при G ^

0,

(2- 11)

1—G при G <

0.

 

Положительное двоичное число с запятой, фиксиро­

ванной перед старшим разрядом,

 

 

G+ = + 0 ,Y 1Ya"-Y„

 

(2-12)

в прямом коде представляется в виде

 

(G+)nP = 0, YiY2*

 

(2-13)

Аналогично отрицательное двоичное число

G = — 0, ѴаѴг-'-Ѵ»

 

(2-12а)

в прямом коде представляется в виде

 

 

(G~)nP = 1, 7і Ѵг"' ’Уп-

(2-U)

Способы представления чисел (2-13) и (2-14) назы­ ваются прямым кодом соответственно положительных и отрицательных двоичных чисел.

Сложение в прямом коде чисел, имеющих одинако­ вые знаки, выполняется достаточно просто. Мантиссы складываются и сумме присваивается код знака слага­ емых. Значительно более сложной является операция алгебраического сложения в прямом коде чисел с раз­ личными знаками. В этом случае приходится определять большое по модулю число, производить вычитание ман­ тисс и присваивать разности знак большего (по модулю) числа. Таким образом, если положительные и отрица­ тельные числа представлены в прямом коде, операции над кодами знаков и мантиссами выполняются раз­ дельно.

69

Операция вычитания (алгебраического сложения) сводится к операции простого арифметического сложе­ ния при помощи обратного и дополнительного кодов, ис­ пользуемых для представления отрицательных чисел в машине. При этом операция сложения распространяется и на разряды знаков, рассматриваемых как разряды це­ лой части числа.

Чтобы представить двоичное отрицательное число (2-12, а) в обратном коде, нужно поставить в знаковый разряд единицу, а во всех других разрядах заменить единицы нулями, а нули — единицами:

 

(G~'o6P = 1, <4 <Ѵ • -ап,

(2-15)

где 0 , -

1 при \'і = 0 И СГг — О при Уг— 1.

 

При

записи отрицательного

числа в дополнительном

коде ставят единицу в разряд

знака, а цифровую часть

числа заменяют дополнением модуля числа до целой единицы. Отрицательное число G ~ = —0, уі у2, -.-,Уп в до­ полнительном коде имеет вид:

(0~)доп = 1> Н е2* • ,6л>

(2-16)

где

 

О, в1еа--.е п = 1 — 0, YxѴа—

(2-17)

Установим связь между самим отрицательным чис­ лом G~ и числами (G~)06p и (G- )ÄOn, представляющи­ ми его обратный и дополнительный коды.

Вычитая (2-12а) из (2-15), имеем:

\G )обр G = 1, Ol сг2’ ' ’°п

( 6, ѴхУг'' *Yn)=

= 1,11 - --1 = 2 — 2~п,

так как cri+Y*== 1- Следовательно,

(G- )O6P — G- + 2— 2~”.

(2-18)

Вычитая (2-12а) из (2-16), имеем:

(С~)доп — СГ = 1, ех е2• • • ея — (— 0, Yi Ys• • ■Yn)-

Учитывая (2-17), получаем:

(С")дап = СГ + 2.

(2-19)

70

Из (2-18) и (2-19) следует:

 

(0~)доп =

(С- )обр + 2 -"(

(2-20)

где п — число разрядов в

числе. Таким образом, допол­

нительный код может быть получен из обратного путем добавления к нему единицы младшего разряда.

Рассмотрим представление нуля. В процессе вычис­ лений могут возникнуть «положительный» и «отрица­

тельный» нули:

 

 

 

 

+ 0,00---0;

 

 

— о,оо...о.

 

Представление

«положительного»

нуля одинаково

для прямого, обратного и дополнительного кодов:

 

(+ 0)пр = 0,00...0.

 

Отрицательный нуль изображается:

в прямом коде

 

 

 

 

( - 0 ) пр=

1,00---0;

 

в обратном коде

 

 

 

(— 0) )бр =

1,1 1 . . . 1;

в дополнительном коде

 

 

(-0)до„ =

 

+ 2 “ " =

0,00... 0,

так как перенос из разряда знака теряется.

Используя обратный или дополнительный код, мож­ но операции вычитания и сложения чисел различных знаков свести к арифметическому сложению кодов чисел.

Рассмотрим использование обратного кода при ал­ гебраическом сложении двух двоичных чисел G и Q, ког­ да одно из них или оба числа отрицательны. Для этого случая может быть сформулировано следующее прави­ ло (предполагаем, что модуль алгебраической суммы меньше единицы).

При алгебраическом сложении двух двоичных чисел с использованием обратного кода положительные слага­

емые представляются

в прямом

коде, а отрицатель­

ные — в обратном и производится

арифметическое

сум­

мирование этих кодов,

включая разряды знаков,

кото­

рые при этом рассматриваются как разряды целых единиц. При возникновении переноса из разряда знака единица переноса прибавляется к младшему разряду

71

суммы кодов'. В результате получается алгебраическая сумма в прямом коде, если эта сумма положительна, и в обратном коде, если она отрицательна.

Это правило легко проверить. Пусть имеем двоичные

«-разрядные числа G~<i0 и

0. Их алгебраическая

сумма — 1<G~-|-Q~<;0. В соответствии

с (2-8) можно

написать:

 

 

(<Г)обр + (<Г)обр = ( Г + 2 -

2-" + Q -

+ 2 - 2 ~ п =

= 12] + (2 - 2~п) + (СГ + О”) -

2~л.

Двойка, стоящая в квадратных скобках, соответству­ ет переносу из знакового разряда. В этом случае соглас­

но сформулированному правилу единица

переноса до­

бавляется к младшему разряду суммы.

 

 

В результате получаем:

 

 

 

 

(G іобр + IQ Jo6p = (G

+ Q

) + (2 — 2

")— 2 +2

или

 

 

 

 

 

(б- )обр + (Q~)O6P = (б’- +

Q-) +

2 -

2~n,

откуда согласно (2-18)

 

 

 

 

 

(G )обр “г (Q

)обр=

(G

-f Q )обр*

(2-21)

Итак, сложение с циклическим переносом обратных кодов двух отрицательных чисел дает обратный код их алгебраической суммы.

Рассмотрим алгебраическую сумму двух чисел: поло­ жительного G+ и отрицательного Q~. Тогда

(G+)np + (<Г)обр = G+ + Q -

+ 2 -

2 ~ п . (2-22)

Если (G++Q - ) > 0 , то 2 + (G+-J-Q- ) > 2

и

возникает

перенос из разряда знака. Так как

перенос

цикличес­

кий, то двойку нужно в рассматриваемом выражении заменить на 2~п.

В результате имеем:

 

(G+)пр + ( ( T W = (G+ + Q-) пр

(2-23)

(при G+ -f Q~ > О)-

 

1 Такой перекос называется круговым или циклическим.

72

Если (G++Q - ) < 0 , то (2-|-G++Q~) < 2 и

переноса

не возникает. В этом случае из (2-22) получаем:

 

(G+ )nP + [Q )обр = (G+ + Q )обр

(2-24)

(при G+ + Q~ <

о).

 

Итак, сложение кодов согласно приведенному прави­

лу дает алгебраическую сумму в

прямом коде, если эта

сумма положительна, и в обратном коде, если она отри­ цательна.

Рассмотрим теперь использование дополнительного кода для алгебраического сложения. Приведем соответ­ ствующее правило (полагаем, что модуль алгебраиче­ ской суммы меньше единицы).

При алгебраическом сложении двух двоичных чисел с использованием дополнительного кода положительные слагаемые представляются в прямом коде, а отрицатель­ ные— в дополнительном и производится арифметиче­ ское суммирование этих кодов, включая разряды знаков, которые при этом рассматриваются как разряды целых единиц. При возникновении переноса из разряда знака единица переноса отбрасывается. В результате получа­ ется алгебраическая сумма в прямом коде, если эта сум­

ма положительна, и в

дополнительном

коде, если эта

сумма отрицательна.

 

 

 

 

 

 

В самом

деле,

если G~<c0 и Q ~ < 0, то согласно

(2-18)

 

 

 

 

 

 

 

 

(G

)доп +

(Q )доп =

G

Ң- 2 4- Q

+ 2

=

 

=

2 f

(G

+

Q

+ 2 ) .

 

 

Так как

— l< G ~ -fQ - <;0,

то

величина,

стоящая в

скобках, меньше двух, но больше единицы. Двойка, сто­ ящая вне скобки, образует перенос из разряда знака, ко­ торый будет отброшен. В результате получаем:

(G )доп +

(Q )доп = (С + Q

) + 2 =

(G +

Q )доп*(2-25)

Если G + > 0, а Q -< 0 , то

 

 

 

 

 

(G+)np 4- (Q )доп =

(G+ +

Q J +

2.

 

Если при этом 0 < G++Q- <; 1, то стоящая

вне скоб­

ки двойка

дает единицу переноса из

разряда

знака, ко-

73

торая отбрасывается. При этом получаем:

(G+)„p + (<Г)доп =

(G+ +

Q_ )np

(2-62)

(при G+ + Q ~> О).

 

 

Если же —1 < G + + Q ~ < 0 ,

то (G++Q - ) + 2 < 2

и пе­

реноса из разряда знака

не возникает. В этом

случае

1G-^)пр + IQ

)доп =

(G+ +

Q )доп

(2-27)

(при G+ -f QT < О)-

Применение дополнительного или обратного кода для представления отрицательных чисел упрощает операцию алгебраического сложения. Алгебраическое сложение чисел с разными знаками заменяется арифметическим сложением кодов, при этом автоматически получается код знака результата. Однако остается нерешенным во­ прос о выработке признака переполнения разрядной сетки.

Допустим, что производится сложение двух отрица­ тельных двоичных чисел, представленных в дополнитель­ ном коде, причем эти числа по модулю меньше, а их сум­ ма по модулю больше единицы, например:

(<7)доп= 1,01010 (—0,10110)

(<3)доп = 1,00101 (— 0,11011)

0 , 0 1 1 1 1

При сложении кодов теряется единица переноса из разряда целых единиц и результат ошибочно восприни­ мается как положительное число, меньшее единицы.

Отметим, что при алгебраическом сложении двух чисел G и Q, каждое из которых по модулю меньше еди­ ницы, может возникнуть переполнение разрядной сет­ ки, но при этом модуль получаемой суммы всегда мень­ ше двух. Это обстоятельство облегчает построение кодов, по виду которых можно судить о переполнении разрядной сетки.

Для получения признака переполнения разрядной сетки применяют модифицированные прямой, дополни­ тельный и обратный коды. Эти коды отличаются от ра­ нее рассмотренных кодов тем, что для представления знака используются два разряда. При этом знак плюс обозначается 00, а знак минус — 11.

При алгебраическом сложении чисел знаковые раз­ ряды рассматриваются как разряды целой части числа.

74

При возникновении переноса единицы из старшего разряда знака эта единица отбрасывается, если отрица­ тельные числа представляются модифицированным до­ полнительным кодом, или производится циклический пе­ ренос в младший разряд мантиссы, если отрицательные числа изображаются модифицированным обратным ко­ дом.

При алгебраическом сложении на переполнение раз­ рядной сетки (модуль алгебраической суммы больше единицы) указывает несовпадение цифр в знаковых раз­ рядах. Комбинации 01 в знаковых разрядах соответст­ вует положительное число, а комбинации 10—отрица­ тельное число.

В этих случаях модуль суммы

 

 

 

 

1 <

М <

2.

 

Сказанное иллюстрируется примерами (индексом м

обозначен модифицированный код).

 

Пример 1.

 

 

 

 

 

G =

0,10110

 

<0)^=11,01001

Q=

— 0,11011

 

(Q)“ 6p = 11,00100

G + Q =

— 1,00001

 

 

~П1,00100

(переполнение

 

,11,01001

 

1 10,01101

разрядной сетки)

 

 

—1

 

 

 

 

 

 

10,01110

 

 

 

 

 

(G-hQ)“6p == 10,01110

 

 

 

 

(О)“ о п =

11,01010

 

 

 

 

 

(Q)"on=

11,00101

 

 

 

 

 

 

+

11,01010

 

 

 

 

 

 

 

 

 

 

 

 

_______________11,00101

 

 

 

 

 

( G + Q ) “

( 1) 10,01111

 

Пример 2.

G =

 

=

10,01111

11,00011

 

 

0,10011

 

(Q)“6p=

G +

Q =

— 0,11100

 

(G)“ p =

00,10011

Q =

— 0,01001

 

+

00,10011

(нет

переполнения)

 

(G + Q)“ p =

11,00011

 

 

 

 

 

 

1 1 , 1 0 1 1 0

 

 

 

 

 

 

I f .10110

75

 

 

(G)M =

00,10011

 

 

 

 

'

' п р

 

 

 

 

 

(Q)M =11,00100

 

 

 

 

'^•'доп

*

 

 

 

 

 

+

00,10011

 

 

 

 

 

11,00100

 

 

 

 

 

 

 

 

 

 

 

 

11,10111

 

 

 

 

(G + Q)"on=n,10111

 

 

Пример 3.

 

 

 

 

 

 

0

=

0,10110

 

(G)£p = 00,10110

Q =

0 ,1 1 1 0 1

 

(Q)“P= 00,11101

 

G + Q

=

1 ,10011

 

 

 

00,10110

разрядной

 

 

+

 

 

 

01,10011

(переполнение

______________ 00,11101

 

 

сетки)

(G+ Q)“p= 01,10011

Пример 4.

 

 

 

 

 

 

G =

— 0 ,0 1 1 0 1

 

(G)o6P =

11,10010

Q =

0 ,1 0 1 0 1

 

 

(Q)np = 00,10101

G + Q =

0 ,0 1 0 0 0

 

 

 

11,10010

(нет

переполнения)

 

+

 

00,10101

 

 

 

 

100,00111

 

 

 

________I - -

->1

 

 

 

 

 

00,01000

 

 

 

( °

+ Q)np =

oo, (иooo

(G)“on= 11.10011

(Q)“p= 00,10101 11,10011

+

_______________ 00,10101

(1)00,01000 (G + Q)np =00,0100°

Показанные на рис. 2-2 и 2-3 разрядные сетки соот­ ветствуют формам, в которых слова записываются в ячейки оперативной памяти. В арифметическом устрой­ стве для контроля переполнения вводят дополнительно второй знаковый разряд мантиссы, а также второй зна­ ковый разряд, порядка (для машин с плавающей запя­ той при отсутствии смещения порядка) и для изображе­

76

ния мантиссы и порядка используют модифицированные коды с двумя знаковыми разрядами.

Отметим особенности нормализации и выполнения сдвига для отрицательных чисел, представленных в до­ полнительном (обратном) коде.

У нормализованного положительного или отрицатель­ ного числа с мантиссой, изображаемой в прямом коде, цифра в старшем 5-ичном разряде мантиссы должна быть отлична от нуля. Для отрицательных мантисс, пред­ ставленных в обратном или дополнительном коде, усло­ вие нормализации | q 1/5 выполняется, если цифра

встаршем 5-ичном разряде мантиссы есть нуль.

Вслучае чисел с плавающей запятой комбинации 01 и 10 в знаковых разрядах мантиссы указывают на нару­

шение

нормализации

влево,

а комбинации цифр 00

и 1 cr.si

(cTsi^O) в младшем знаковом разряде и старшем

5-ичном цифровом

разряде

мантиссы сигнализируют

о нарушении нормализации

вправо. Для восстановле­

ния нормализации производится сдвиг мантиссы впра­ во (или влево) на нужное число разрядов, при этом порядок увеличивается (уменьшается) на соответствую­ щее число единиц.

Если отрицательные числа представляются в допол­ нительном (обратном) коде, сдвиг производится по осо­ бым правилам («модифицированный сдвиг»), с тем что­ бы в результате сдвига дополнительного (обратного) кода числа х на т 5-ичных разрядов получился дополни­ тельный (обратный) код числа Smx или S~mx соответст­ венно для сдвига влево или вправо.

При модифицированном сдвиге дополнительного (об­ ратного) кода вправо в освобождающиеся старшие раз­ ряды мантиссы записываются единицы, а при сдвиге влево единицы записываются в освобождающиеся млад­ шие разряды.

2-5. К О Д И Р О В А Н И Е Д Е С Я Т И Ч Н Ы Х Ч И С Е Л

В большинстве вычислительных машин и систем для представления и хранения информации внутри машин и ее преобразований используются двоичный алфавит и двоичная система счисления. Однако и в этом случае для облегчения связи человека с машиной необходимо иметь возможность готовить и вводить в машину исход­

77

ную информацию в привычной для человека десятичной системе и получать результаты обработки информации в этой же системе.

Для этой цели необходимы специальные коды, поз­ воляющие представлять десятичные цифры посредством букв двоичного алфавита (0 и 1). Такие коды называ­ ются двоично-десятичными.

Был предложен ряд систем кодирования. Выбор той или иной из них зависит от особенностей использования десятичной информации в вычислительных устройствах Если десятичные числа используются только при вводе и выводе информации, а вычисления производятся в двоичной системе, то наиболее важными требования­ ми к системе кодирования десятичных чисел являются наглядность представления десятичных чисел и просто­ та перевода чисел из десятичной системы в двоичную

иобратно.

Вмашинах, предназначенных для обработки эконо­ мической информации, часто сами операции над числа­

ми выполняются в десятичной системе счисления. В этом случае способ кодирования десятичных чисел приходит­ ся выбирать с учетом удобства выполнения над ними арифметических операций.

Наконец, если определяющим моментом является достоверность подготовки десятичных данных и переда­ чи их в машину, то для выбора способа кодирования существенны простота контроля правильности поступа­ ющих данных и возможность исправления возникающих при передаче ошибок.

Система кодирования десятичных знаков, как впро­ чем и любых других знаков \ посредством букв дво­ ичного алфавита должна удовлетворять следующим ус­ ловиям: а) в кодовом слове легко должна определяться граница между кодами рядом записанных знаков; б) ка­ ждому знаку должна соответствовать одна единствен­ ная комбинация букв двоичного алфавита.

Проще

всего удовлетворяется первое требование, ес­

ли коды

всех символов имеют одинаковую дли­

ну (число разрядов). Тогда, если известно местоположе­ ние начала слова, легко определяется граница между соседними кодами знаков. Чтобы можно было предста-

1 В следующем параграфе рассматривается кодирование алфа­ витно-цифровой (текстовой) информации.

78

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