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

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

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

Нормализация

чисел в машине производится

автоматически

в ходе вычислений,

либо по специальным командам.

Нормализация

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

Например, ненормализованное число

= 0,00000011111 ПО010.

110нулей

врезультате нормализации будет иметь вид

= 0, 11111■ 10°1(>- ио - 0,1 1111•ю -100.

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

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

Например, в числе 0,1110 111-10110 порядок р == ПО (610), поэ­ тому

0 ,11Ю 11Ы011011.1011,1 .

ПО цифр

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

Например, в числе 0,10101111- Ю~101 порядок р — — 101 (— 510),

поэтому

0,10101111 - Ю~101 = 0,0000010101111 .

101 нулей

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

Знак числа

 

Мантисса

 

 

Указатель

положения

запятой

Номера

0

4

п

п

п + 2

п + 3

п-\-т

разрядов

 

 

 

 

 

 

 

 

 

 

 

АI

Порядок

 

 

 

 

Знак

 

 

 

 

порядка

 

 

 

 

 

 

Рис.

6

 

 

 

30

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

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

 

 

т цифр

 

 

 

0,11

. . .

1 Ы 0 1Т_:_'1= [ 1 - 2 - (л“ 1)]-22т~ '.

(2.4)

л—1 цифр

 

 

 

Минимальное нормализованное число, представимое в машине,

будет

 

т цифр

 

 

 

 

 

 

 

 

0,100

. . .

0 .ю 'ГТГ:^

= 2 - 1.2 - 2т+1 = 1Г2'П.

 

Общий диапазон чисел, представимых в машинах с плавающей

запятой в разрядной

сетке (рис. 6), характеризуется неравенством

 

2 - 2m< | M | < [1—2 ~ {п~ 1)] 22'" - 1.

(2.5)

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

рядка используется от 6 и более разрядов,

а для изображения ман­

тиссы от 30 и более разрядов.

машину

с плавающей

запятой,

Рассмотрим

вычислительную

у которой п—1 — 12, т — 4. Разрядная сетка такой ЦВМ приве­ дена на рис-. 7.

 

 

 

Указатель

 

Мантисса

положения

запятой

Номера

0

10 Н 121 13

14 15

16 17

разрядов

 

 

 

 

t

А ________ ____

 

Знак

Порядок

 

Знак

мантиссы

порядка

 

 

(число)

7

 

 

 

Рис.

 

 

Диапазон чисел, с которыми может оперировать УВМ с плаваю­ щей запятой, равен

2 - 24< | i V | < ( l - 2 - 12).2 24- \ 2~16< | М |< (1—2_12)-215,

0,00002 < | N | < (1 — 0,00024) 32768.

31

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

мяти ЦВМ с плавающей запятой числа ф- 99,875 -----

i

1100011,111 =

=

+

0 , 1 1 0

0 0

1 1 1 1 1 - 1 0 1 1 1 приведена на рис.

8 .

 

 

 

 

 

0

 

1

1

0

0

0

1

1

1

1

1

0

0

0

0

1

1

1

 

 

 

 

 

 

 

 

Рис.

8

 

 

 

 

 

 

 

 

 

Запись

в

ячейке

памяти

ЦВМ

с

плавающей

запятой

чис»

ла

-

 

0 , 0 2 2

 

0 , 0 0 0 0 0 1 0 1 1 0 1

==

1 , 1 0 1 1 0 1 - 1 0 —101

 

приведена

на

рис

9.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

0

1

1

0

1

0

0

0

0

0

0

1

0

1

0

1

 

 

 

 

 

 

 

 

Рис.

9

 

 

 

 

 

 

 

 

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

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

а) отбрасываются все цифры, стоящие справа от /г-го разряда; б) оставшиеся цифры сохраняются без изменения, если первая отброшенная цифра меньше половины основания выбранной си­

стемы счисления; в) если первая из отброшенных цифр больше или равна поло­

вине основания, к последней оставшейся цифре добавляют еди­ ницу.

Например, число 89,965= 1011001,11110111 =

= 0,10110011111011 Ы 0 Ш = 0,10110011111 М О 111.

установленные

12разрядов

ВЦВМ с плавающей запятой для изображения абсолютной ве­

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

32

§ 2. ПРЕДСТАВЛЕНИЕ ОТРИЦАТЕЛЬНЫХ ЧИСЕЛ В ЦВМ

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

0,11001

0,101100

0,000111

Вычитание двух чисел выполняется по общепринятому алго­ ритму:

1 ) два числа сравниваются по модулю «2 » для выявления боль­ шего числа;

2 ) из большего числа вычитается меньшее, результату присваи­ вается знак большего числа.

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

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

Для представления двоичных чисел в ЦВМ применяют прямой, дополнительный и обратный коды. Знак числа во всех указанных кодах изображается нулем или единицей: положительный знак изо­ бражается цифрой 0 , отрицательный — цифрой 1 .

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

0, Х!Х2х3 . . . хп

и лежать в интервале 0 <^х<П - Все отрицательные числа будут иметь вид

1, ххх2х3 . . . хп

и лежать в интервале 1 < Д < ; 2 .

При такой условности любому отрицательному числу х, лежа­ щему в интервале — 1 ^ х - < 0 , можно поставить в соответствие положительное число [х], лежащее в интервале

1<1*] < ! + [*]•

§ 3. КОДЫ ЧИСЕЛ

Прямой код

Если х ■— правильная двоичная дробь, положительная или от­ рицательная, то прямым кодом числа х называют число [х]пр по­ лучаемое по следующей формуле:

если х 0 ;

( 2 . 6)

если 0 .

3 З а к а з № 2437

33

Например:

[0 ,1 0 1 0 1 1 1 ]пр = 0 ,1 0 1 0 1 1 1 ;

[ — 0,1010111]пр = 1— (— 1010111) =1,1010111.

Из формулы (2.6) видно, что нуль имеет два значения прямого кода

[0, 0 . . . 0] = 0, 0 . . . 0;

[—0, 0 . . . 0 ]= 1 — (— 0, 0 . . . 0) = 1, 00 . . . 0.

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

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

Пример 3.

х = 0,00101 = —

32

у = 0 ,0 0 1 1 0 1 = —

__________________М

х + у = 0 , 0 1 0 1 1 1 = —

Пример 4.

 

 

 

* = —0,00111

[х]пр =

1,00111 =

---- --

 

 

 

32

у — 0 , 1 0 0 1 1

U/]np =

1,10011 =

 

[х+у]„р= 1 ,1 1 0 1 0 = — j |

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

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

Если х — правильная двоичная дробь, положительная или от­ рицательная, то дополнительным кодом числа х называют число [х ]Доп> получаемое по формуле

=

|

Хз

если

* ^

0

(2 7)

доп

(Ю +

х,

если

х <

0

(здесь 1 0 равно 2 ).

34

Так как знак отрицательного числа изображается цифрой 1, то из (2.7) следует, что мантисса отрицательного числа будет равна

1 0 — 1 + * = 1 + * = 1 — |* |,

(2 .8 )

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

Пример 5. Определить дополнительный код отрицательного числа

= — 0 , 1 0 0 0 0 1 1 = — —

128

В знаковый разряд дополнительного кода запишем цифру 1, а в дробную часть — дополнение | * j до единицы

_ 1 ,0 0 0 0 0 0 0 =

1

0,1000011 =

_ _ J __________ 128_

0 ,0 1 1 1 1 0 1 = —

128

М доп= 1,0111101.

Если х — — 0, х хх гх3 . . . хп, то выражение (2.8) можно пре­ образовать следующим образом:

Мдоп =Ю— 0 , хгх2х3

. . .

*„=l + (l — 2 ~ п +

2 ~ п — 0 ,

*х*2 . . . х„)

=

1 +

[(l — 2 ” — 0 , *1 *2 *3 . . . хп) + 2

”] =

 

=

1 +

[(0,

11 . . .

1— 0, х ^ Х з

. . . хп) + 2~п} =

 

 

 

 

п цифр

 

 

 

 

— (1 + 0,

*1 *2 * 3

• • •

*„) + о,

0 • • ■ Q1;

 

 

 

 

 

 

 

п1цифр

 

 

М доп=1.

*1*2*3 . . .

*„ +

0, О . . .

01,

 

(2.9)

 

 

 

 

 

п 1 цифр

 

 

где *,■— цифра,

противоположная *г (i = 1,

2, 3, . . .

п)

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

ряде числа поставить цифру 1,

в дробной части единицы заменить

нулями, а нули — единицами,

и к младшему разряду полученного

числа прибавить единицу.

 

3*

35

Обобщая

выражения

(2.7)

и (2.9), получим

 

 

х,

 

если х + О

 

Мдоп =

' i t Х1 Х2 '.

. . х„ +

0, 00 . . . 01, если л:<0.

(2-^°)

 

 

 

п 1 цифр

 

Из выражения (2.10) находим, что нуль в дополнительном коде

имеет одно значение

 

 

 

0, 0 . . . = 0,00 . . . .

0

 

 

—0,0 . . . 0=1,11 ..............

1+0,00

. . . 01 = 10,00 . . . 00

 

п цифр

п—1 цифр

Учитывая

потерю разряда

левее знакового разряда, получим

 

— 0,0 . . .

0 = 0,00 . . . 0.

Пример 6. Определить дополнительный код отрицательного числа

 

—0,111001 = —— .

 

 

 

 

64

Согласно

выражению

(2.10)

 

 

 

[■^]доп

_ ,1,000110

 

 

0,000001

 

 

 

 

 

 

1,000111 =

------- -

 

 

 

 

64

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

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

Оба слагаемых положительны, сумма положительна.

Если 0 < + < П , 0++ << 1

и 0 < + + г /< П ,

то

 

[•^]доп “1 (!/]доп = X“Ь У= [%+

У]д0П*

Пример 7.

 

 

 

х = 0,01001;

[х]доп = 0,01001

= —

 

 

 

32

У= 0,10101;

[г/)ДОп = 0,10101

= -g -

 

 

 

oZ

[х + у]лт = 0,П П 0 = ^ .

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

Оба слагаемых отрицательны, сумма отрицательная:

1 < х < 0 , 1 <+<С0, — 1 < х + г/<0.

36

Согласно выражению (2.7) имеем:

Мдоп+ [7/]доп =

Ю + д:+10 +

г/— 10-|-(10-|-д: +

г/).

(2-11)

Согласно условию

— 1 0 +

г/< 0, поэтому

1-<10 +

х +

+ у<С2. Учитывая, что двойка, стоящая в выражении (2.11) вне скобок, образует перенос из разряда знака, который будет отбро­ шен, получим:

 

 

I-'']ДОП"Ь \ДОП

1 0 -р ■*- “I- у

 

[Х-\-

доп-

 

( 2. 12)

Пример 8.

 

 

 

 

 

 

 

 

 

 

 

х = •—0,000101 =

 

 

 

М Доп=

1,111011

__59

 

 

 

64

 

 

 

 

 

 

 

 

 

 

 

 

У= — 0,110001 =

— -g-

 

 

[у]доп=

1,001111

_ J 5

 

 

64

 

 

 

 

Ь4

 

 

 

 

 

 

 

I у

 

=

 

32

 

 

+

^/]Доп =

11,001010

 

 

 

 

 

 

 

 

 

 

 

 

 

Учитывая потерю

единицы

левее знакового разряда, получим

 

 

[* + !/]доп= 1,00101 =

-

± .

 

 

 

Отрицательный знак суммы говорит о том, что алгебраическая

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

 

 

 

Одно из слагаемых положительно,

 

другое — отрицательно,

сумма — положительна:

 

 

 

 

 

 

 

 

 

0 < * < 1 ,

— 1<г/<0,

х > \ у |,

0-<л:+г/<1.

 

Согласно выражению (2.7)

 

 

 

 

 

 

 

 

[■^]доп ~Т“ [#]доп =

Х-\-\§ y=\Q-\- Х-\~ у.

 

(2.13)

По условию

0 < ;x

+

y<Ch

а двойка (10) образует перенос из

разряда знака,

который будет отброшен, поэтому

 

 

Пример 9.

Мдоп + [У]доп — х + У= Л-у\ррп-

 

(2-14)

 

 

 

 

 

 

 

 

 

 

 

 

х — 0,010001 — —

 

 

Мдоп=

0,010001= —

 

 

 

 

64

 

 

 

д

 

 

64

у =

-0,001001 =

- ±

 

 

[у]д0П= 1,110111 =

— g

____________________________ 64

 

 

Л

 

 

 

64

хАгУ

 

 

=

 

[л:+ у]доп= 10,001000= —

 

 

 

 

 

О

 

 

 

 

 

 

о

Учитывая

потерю единицы левее

знакового разряда,

получим

 

 

 

[ * +

0]Доп =

0,001 =

О

 

 

 

 

 

 

 

 

 

 

 

 

 

 

37

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

Одно из слагаемых — положительно, другое — отрицательно, сумма — отрицательна:

0 < х < 1 , — 1 < г /< 0 \ у \ > х — 1<х + у < 0 .

Согласно выражению (2.7)

Мдоп + [#]Доп = х + Ю + у = Ю + х + г/.

По условию — 1 < + + 0, тогда на основании определения дополнительного кода имеем:

 

М Доп + 1*/]доп = Ю+

Х + у = [х +г/]доп.

(2.15)

Пример 10.

 

 

* =

0,010011 =

[*]д0П= 0,010011=

 

у =

-0,100111 = - Ц - ,

[г/]доп == 1,011001 =

— 1 |

х + у

— Ц-,

[х + у]доп= 1,101100=— L

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

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

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

Обратный код

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

х ,

если

х 0

10+ х— 10-п , если

(2.16)

х -+ 0,

где 10 — означает число 2,

 

 

п — количество разрядов дробной

части.

Если х = — 0, х гх гх3 . . . хп, то выражение (2.16) можно пре­ образовать следующим образом:

Мобр — 10 + а:— 10 п— 1 + 1—0, хгх2х3 . . . хп— 10 п—

38

1 + f(l — 10~"+ Ю_п —0,

в д

. . . х„) — 10-"]

1 +

[0, И • • • 11—0, з д

. . . х „)+ Н Г " — 10“ "

 

п цифр

 

 

 

 

= 1 + 0, Х\Х2 . . . Хп = \ , Х1Х2Х3 . . .

хп,

 

/

 

 

 

(2.17)

Мобр= 1.

XiX2X3 . . . хп.

 

 

 

Обобщая выражения (2.16)

и (2.17),

получим

 

 

 

х,

если

х > 0 ,

 

1, Х\Х2 . . .

хп,

если

(2.18)

 

х + 0.

Из выражения (2.18) вытекает следующее правило образования обратного кода отрицатёльного числа: в знаковый разряд поставить цифру 1, в дробной части числа все нули заменить единицами, а единицы нулями.

Нуль в обратном коде имеет два значения:

0,00 . . . 0 обр.— 0,00 . . . о

— 0,00 . . . 0 обр. = 1,11 . . . 1.

Пример 11. Определить обратный код отрицательного числа А

—А = —0,11101 = — —

32 *

Согласно выражению (2.18), имеем

Ween = 1,00010= 1,0001 = -L

lb

Сложение правильных двоичных дробей в обратном коде

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

Рассмотрим четыре основных случая сложения чисел в обратных кодах.

Оба слагаемых положительны:

0 < х < 1 ,

0 < £ /< 1 , 0 < г / + х < 1

[^1обр “Ь

обр=

У=

у]обр"

39

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