Файл: Архаров В.И. Арифметические и логические основы цифровых вычислительных машин учеб. пособие.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о
Положительный знак суммы свидетельствует о том, что алге браическая сумма получилась в прямом коде.
Оба слагаемых отрицательны, сумма отрицательная:
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