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

книги из ГПНТБ / Бирюков Н.Е. Основы электронной вычислительной техники

.pdf
Скачиваний:
11
Добавлен:
29.10.2023
Размер:
8.36 Mб
Скачать

§8. к о д ы ДВОИЧНЫХ ЧИСЕЛ

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

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

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

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

Прямой код. Число х в прямом коде условно обозначается

(х)пр.

Прямой код

числа х

получается

по следующему правилу:

если

х —+ 0, Х\Х2Ха.

. . .хг.

. . ,хп,

где х — двоичные цифры, то (х)пр =

= х = 0,Х1Х2хл.

. ,х;. . .

,хп;

если

х = — 0,х,х2Хз. . .xt . . ,хп, то

(Пир™ 1

. ,Х[ ..

. .Л/7.

 

 

 

Таким образом, прямой код двоичного числа совпадает по изо­ бражению с записью самого числа, но в разряде знака стоит 0 или 1 соответственно для положительного пли отрицательного числа.

Обратный код. Обратный код числа х обозначается (х)0бр. Обратный код положительного числа совпадает с его прямым ко­ дом. Поэтому, если х > 0, то (х) 0бр = (х) Г1„ = х.

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

Таким

образом,

.

если

имеем

отрицательное

число

х = —0,XiX2x,4.

. . .х. .

.х, то его изображение в обратном коде бу­

дет (х)0бр = l,xix2x3. .

.

.л',-.. ■ -х„, где

Xi = 1,

если х г = 0;

х( = 0,

если х i -----1.

 

 

 

 

 

 

 

Приме р .

х = —0,101010;

(х)обр = 1,010101.

 

 

 

В ЭЦВМ при сложении обратных кодов

по соответствующим

правилам получаем обратный код суммы.

 

 

Дополнительный код. Дополнительный код числа х обозна­ чается (х)доп. При х > 0; (х) доп = (х)пр = х, т. е. дополнительный код положительного числа совпадает с его прямым кодом.

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

20

а во всех цифровых разрядах нули заменяются единицами, а еди­

ницы нулями,

и к младшему разряду прибавляется

единица. Та­

ким образом,

если

имеем отрицательное

число х = —0,Х]Х2Хз. . . .

х ь . . .xWl to

его

изображение в дополнительном

коде будет

(х )доп= 1 ,*1*2*з- ■ ■ ■Х1 . . .хп+ 0,000. . .

.1, n-разрядов, где х/ = 1

если х =0 н х i = 0, если x t 1.

 

 

Пример.

jc= —0,101011; (х)дои= 1,010100 + 0,000001 = 1,010101.

Дополнительный код отрицательного двоичного числа есть до­ полнение этого числа до двух (10 в двоичной системе), т. е.

(*)дои=10 + *- Если х = - 0,101011, то (х) чоп= 10—0,101011 = = 1,010101.

При сложении дополнительных кодов по соответствующим пра­ вилам в машине получают дополнительный код суммы.

Модифицированный обратный код. Модифицированный обрат­ ный код х обозначается (х)”б . Правильные двоичные дроби пере­

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

Пример.

 

х = 0,101010;

(лг)”вр = 00,101010.

х = —0,101010;

(x)“jp = 11,010101.

Модифицированный дополнительный код. Число х в модифици­ рованном дополнительном коде обозначается (х)“011. Числа пере­

водятся в этот код так же, как и в дополнительный, но на изобра­ жения знака отводятся два разряда.

Пример.

х= 0,101011; (jc)"on = 00,101011.

*= —0,101011; (х) дОП= 11,010101.

§9. СЛОЖЕНИЕ ЧИСЕЛ В МАШИНАХ

1.Сложение чисел в машинах с фиксированной запятой

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

сумма были меньше единицы.

1) Сложение чисел в дополнительном коде

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

21

Пусть

складываемые числа х и

у — правильные дроби, т. е.

+ у) <

1.

При сложении дополнительных

кодов

чисел, удовле­

творяющих этим условиям, могут встретиться четыре случая.

а) х > 0;

у > 0; х + у > 0:

 

 

 

 

 

прямой код

дополнительный код

 

х = 0,100101

 

(X) =0,100101

 

у = 0,001101

 

(>')доп =

0,001101

* + # = 0,110010

(* +

У)доп =

0,110010

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

б) х > 0;

у < 0;

х + у < 0:

прямой код

дополнительный код

х — 0,011001

( * ) д о п = 0,011001

у = 0,101101

.1у)доп= 1,010011

х + у = 0,010100

(* + У)доп=1,101100

в) х > 0;

у < 0;

х~| > 0:

прямой код

дополнительный код

х =

0,101101

(•*)ДОп = 0,101101

у = —0,011001

(У)доп= 1,100111

х + у =

0,010100

-{- у)Доп — 0,010100

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

г) х < 0; у < 0; х + у < 0:

 

прямой код

дополнительный код

* = —0,100101

(*)доп= 1,011011

г/= —0,011001

(У)доп=и00111

х + у = 0,111110

(JC + у)дон = 1,000010

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

2) Сложение чисел в обратном коде

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

а) х > 0; у > 0; х+г/ > 0.

22

N

Так как слагаемые положительны, то изображения их в обрат­ ном и прямом кодах совпадают;

б) х > 0; у < 0; х-\-у < 0:

прямой код обратный код

х = 0,001001

р= - 0,010001

х+ у = —0,001000

в) х > 0; у < 0; х-\-у > 0:

прямой код

х = 0,101001

#= —ОДЮПО!

х+ у= +0,011100

(х)обр = 0,001001 (У)обр = 1.101110

(Л- + У)обр= 1,110111

обратный код

(Аг)0б р =

0,101001

(У)0бр =

1.110010

 

10,011011

 

!------ >+ 1

(■* + У)обР =

0,011100

В данном примере возникает циклический перенос. Единица переноса, получившаяся в разряде целых чисел, прибавляется к младшему разряду суммы обратных кодов;

г) X < 0; у < 0;

Х + у < О.-

 

прямой код

обратный код

х —0,101001

(■*)обр=

1,010110

( У ) о б р =

1,101110

у = 0,010001

=

11,000100

х + г/= —0,111010

 

1---- '"I '1

 

(-,сд-у)обр=

1,000101

3) Признаки переполнения разрядной сетки при сложении чисел в дополнительном и обратном кодах

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

П р и м е р Е

Переполнение разрядной сетки при сложении дополнительных кодов чисел:

прямой код

 

дополнительный код

х = —0,110011

_

(х)доп=: 1,001101

_________{/= —0,101101_______

)доп=

1,010011_____

х + у = —1,100000

 

-|- у)Доп =

0,100000

В результате сложения получился дополнительный код положи­ тельного числа, в то время как действительная сумма числа отри­ цательная и равна - 1,100000. Произошло переполнение разряд­ ной сетки.

П р и м е р 2.

Переполнение разрядной сетки при сложении обратных кодов:

прямой код дополнительный код

х = —0,101010

(х)обр=

1,010101

_________ г/= —0,010111_______

(у)обр =

1,101000

Х + у = -1,000001

'

10,111101

 

__________________

 

(* + 3 ')о б р =

0,111110

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

Результат сложения в обратном коде не соответствует действи­ тельности.

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

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

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

4)Сложение чисел в модифицированном дополнительном коде

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

а) х > 0; у > 0;

х + у > 0:

прямой код

модифицированный

дополнительный код

х=0,010101

' (*)“оп = 00,010101

0= 0,101001

(у)?оп = 00,101001

* + 0 = о , п ш о

(х~+ У); ~ = 00, 111 п о

24

б) х > 0; у < 0; х + у > 0:

прямой код

х = 0,110101 у = 0,010100

х+-у = 0,100001 в) х < 0; у < 0; х-\-у < 0:

прямой код

х = — 0,010101

^= — 0,010001

х+ у —0,100110

модифицированный дополнительный код

ИИш = оо,1ЮЮ1

№ п = П.101 ЮР

(* + У)Зоп = 00,100001

модифицированный дополнительный код

(*)“„„= 11,101011

п = 1М 01 i n

U -Г У)д0П= 11.01101°

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

5)Сложение чисел в модифицированном обратном коде

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

кодов:

х =

0,110001

(*)"бр=

00,110001

У=

0,001001

(У)обр =

11,110110

х + у=

0,101000

 

100,100111

 

______________ 1— >4-1

 

С*+

У)“вр =

00,101000

6) Переполнение разрядной сетки при сложении модифицированных кодов

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

Рассмотрим примеры переполнения разрядной сетки.

1. Переполнение при сложении модифицированных дополни­ тельных кодов:

* = —0,101011

№ п =

п,010101

у = 0,110010

(v)«on=

11,001 ПО

х +у — 1,011101

 

10,100011

25

Результат сложения 10,100011 в модифицированном дополни­

тельном коде не существует.

модифицированных

обратных

2.

Переполнение при сложении

кодов:

 

 

 

 

* = 0,101101

(Х)обр == 00,101101

 

 

у = 0,111101

(У)о”бр == 00,111101

 

 

* + //=1,101010

01,101010

Полученный результат 01,101010 в

модифицированном

обрат­

ном коде не существует.

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

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

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

2. Сложение чисел в машинах с плавающей запятой

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

Порядком суммы является общий порядок слагаемых чисел.

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

 

мантисса

порядок

Первое число

х= 1,101100110

ООП.

Второе число

г/= 0,110101101

0101.

Сложение производится в следующем порядке:

1. Слагаемое х сдвигается вправо на два знака с тем, чтобы уравнять его порядок 011 с порядком 101 слагаемого у. После сдвига запись слагаемого х будет иметь вид

* = 1,001011001 0101.

26

2. Перевод мантисс х и у в обратный модифицированный код:

мантисса

х= 11,110100110

 

мантисса

г/= 00,110101101.

 

3.

Сложение мантисс:

 

 

 

(*)о"бр= 11ДЮ100110

 

 

№ р =

00,110101101

 

 

 

100,101010011

 

 

 

I----------- >—|—1

 

 

(*+-V)“6p =

00,101010100

4.

Перевод суммы (х + у) “6

в прямой код:

х+ у = 0,101010100.

5.Запись результата:

х + у = 0,101010100 0101.

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

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

рядной

сетки. Причиной переполнения является то, что

сумма

/х + у/ +

1. Признаком переполнения является наличие

разных

цифр в знаковых разрядах, причем комбинация 01 указывает, что сумма положительна, а комбинация 10 — на то, что сумма отрица­ тельна. Следовательно, по левому из двух знаковых разрядов можно установить знак суммы (0 ы «+ »; 1 « —»). Исходя из этих обозначений, можно сразу получить сумму, не делая повтор­ ных вычислений. Для этого нужно сдвинуть результат сложения на один разряд вправо, во второй знаковый разряд занести цифру, стоящую в левой части знакового разряда и увеличить порядок на единицу. Эти операции машина выполняет автоматически, после того, как устройство сравнения выработает сигнал, свидетель­ ствующий о наличии разных цифр в знаковых разрядах.

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

Предположим, что после сложения в модифицированном обрат­ ном коде получили сумму х + у = 10,101011110 0110, т. е. произошло нарушение нормализации влево.

Для осуществления нормализации числа необходимо: 1. Сдвинуть результат вправо:

11010101111.

2. Преобразовать в прямой код:

1101010000.

27

3.Увеличить порядок 0110 на единицу:

,ОНО

_ 1

0111

4. Результат вычислений будет 1101010000

0111.

§ 10. УМНОЖЕНИЕ ЧИСЕЛ В МАШИНАХ

Умножение чисел в ЭЦВМ сводится к определению знака и чис­ ловой величины произведения.

Знак произведения определяется суммой знаков сомножителей:

0+ 0= 0; 0+1 = 1; 1+ 0= 1; 1+ 1= 0.

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

( + ) • ( + ) = ( + ); ( + ) • ( - ) = ( - ) ; ( - ) ■ ( + ) = ( - ) ;

( - ) • ( - ) = ( + )•

После определения знака произведения перемножаются сами числа. Численная величина произведения получается путем после­ довательного перемножения множимого на все разряды множи­ теля.

1. Умножение чисел в машинах с фиксированной запятой

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

Сдвиг множимого влево:

Сдвиг множимого вправо

1111

1111

1011

1011

1111

1111

1111

1111

1111

1111

10100101

10100101

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

28

2. Умножение чисел в машинах с плавающей запятой

В машинах с плавающей запятой умножение осуществляется в следующем порядке:

1.Определяется знак произведения мантисс;

2.Определяется порядок произведения путем алгебраического

сложения порядков сомножителей;

3.Перемножаются мантиссы сомножителей;

4.Осуществляется нормализация порядка (если необходимо).

Пример.

х = —0,00110101;

у= 10010,1.

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

х -> 1110101

1010

у -^ 0100101

0101.

1. Определение знака произведения:

0+1 = 1.

2. Определение порядка произведения:

(—010) + ( + 101) = + 011.

3. Перемножение мантисс сомножителей:

0,110101

0,100101

110101

110101

__________ 110101

0,011110101001.

Если ячейка памяти запоминающего устройства рассчитана, например, на 10 разрядов, то результат перемножения запишется в следующем виде:

10111101010 ООП.

4. Нормализация результата произведения:

11111010100 0010.

§ 11. ДЕЛЕНИЕ ЧИСЕЛ В МАШИНАХ

Операция деления в ЭЦВМ выполняется значительно реже, чем сложение и умножение.

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

29

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