Файл: Архаров В.И. Арифметические и логические основы цифровых вычислительных машин учеб. пособие.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.07.2024

Просмотров: 87

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

мяти ЦВМ с плавающей запятой числа ф- 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