книги из ГПНТБ / Архаров В.И. Арифметические и логические основы цифровых вычислительных машин учеб. пособие
.pdfПример 12.
* = 0,111001= А - , |
[Х]0бр= 0,111001 = А |
64 |
Ь4 |
у = 0,000101 = А |
[г/]обр = 0,000101= А |
64 |
__________________________ Ь4_ |
х+г/ = 0,111110= А , |
[* + у1обр = 0,111110 = А |
Одно слагаемое положительно, другое отрицательно, сумма положительна:
0 < х < 1, — 1 < г /< 0 , х^>\ у\, 0 < * + г /< 1 .
Осуществляя циклический перенос из знакового разряда в млад
ший разряд, получим |
|
|
|
|
|
|
|
Мобр + |
[у]обр — 00 + (х + У) — Ю ”+ Ю п= х-\гу — [х + у]о6р. |
||||||
Пример |
13. |
|
|
|
|
|
|
* = |
0,011101= |
А , |
' |
[х]обр = |
0,011101= |
-А |
|
|
|
64 |
|
|
|
|
64 |
У = -0,010101 = |
- А |
, |
|
[у]обр= |
1,101010= —Ц- |
||
|
= |
_L |
|
Iх + у ]0бр= |
10,000111 |
|
|
|
|
8 |
’ |
|
__________ I____ - + |
|
|
|
|
|
|
|
[х-\-у]обр= |
0,001000= |
— |
|
|
|
|
|
|
|
о |
Положительный знак суммы указывает на то, что алгебраиче ская сумма получилась в прямом коде.
Одно слагаемое положительно, другое отрицательно, сумма от рицательна:
— 1 < х < 0 , 0 < г /< 1 , | х\>>у, — 1 < * + г/<0
Мобр +[у!обр ^ 10+ * — 10 ”+ г/ = 10 + (х + у)— 10 ” = [х + у]обр.
Как видим, циклический перенос в данном случае отсутствует.
Пример |
14 |
|
|
* = |
— 0,100101 = |
[х]обр = |
1,011010 |
|
97 |
[у]обр = 0,011011 |
|
(/= + 0 ,0 1 1 0 1 1 = + -+ -, |
|||
х + у = -0 ,0 0 1 0 1 0 = - А , |
[* + г/]обр = |
1,110101 = - А |
|
|
61 |
|
64 |
40
Отрицательный знак суммы говорит о том, что алгебраическая сумма получилась в обратном коде.
Оба слагаемых отрицательны:
— 1 < х < 0 , — 1 < г /< 0 , — 1 < х + у < 0
Мобр + Uj U p = Ю + х - К Г " + 10 + у - 10-" =
= 10+ [10+(* + !/) — КГ"] — КГ".
Осуществляя циклический перенос из знакового разряда в млад ший разряд, получим:
[х]0бр + [у]Обр = 0 0 + [l0 + (x + z/)— 10 "]— 10 " + 1 0 " =
= 10+ (х + у) — 10 ” = [х+г/]обр.
Пример 15.
х = |
—0,101111 = |
— — |
[х]обр= |
1,010000 |
|
|
64 |
|
|
« = |
— 0,000011 = |
---- - |
[0]обр = |
1,111100 |
|
|
64 |
|
|
х + у = — 0,110010= —— |
|
11,001100 |
||
|
|
|||
|
|
32 |
__________I-------- >1 |
х + у[обр= 1 ,001101 = — 4 т
Отрицательный знак суммы свидетельствует, что алгебраиче ская сумма получилась в обратном коде.
§ 4. ПЕРЕПОЛНЕНИЕ РАЗРЯДНОЙ СЕТКИ МАШИНЫ
Как было указано выше, в ЦВМ с запятой, фиксированной перед старшим разрядом, могут быть записаны только правильные дроби. Поэтому все величины, входящие в решаемую задачу, необходимо умножать на масштабные коэффициенты, подобранные таким об разом, чтобы в процессе вычислений разрядная сетка не переполня лась.
Если масштабные коэффициенты подобраны неправильно, в про цессе вычислений при сложении двух чисел с одинаковыми знаками или при делении двух чисел, результат может превысить по абсо лютной величине единицу. В этом случае нужно остановить ЦВМ и изменить масштабные коэффициенты, поэтому в машинах необ ходимо иметь автоматическую сигнализацию о переполнении раз рядной сетки.
• Если х > 0 , y's> 0 и х + у^> 1, то признаком переполнения яв ляется наличие цифры 1 в знаковом разряде.
41
Пример 16.
* = 0,11101 = —
32
и= 0,00111 = —
у__________32
*+ у = 1,00100
Если * < 0 , у < 0, |* |
+ |
у \ > 1 , |
то признаком переполнения яв |
|
ляется наличие цифры 0 в знаковом разряде. |
|
|||
Пример 17. |
|
|
|
|
* = -0 ,1 0 0 0 1 = |
— |
, |
[*]доп= 1,01111 = — -Ц- |
|
у = -0,10011 = |
|
|
[r/W = 1,01101 = — § |
|
|
|
и |
+ г/]Доп = 0,11100 |
|
Пример 18. |
|
|
|
|
* = - 0 ,1 0 1 0 1 = — ^ |
[*]овр= |
1.01010 |
||
|
|
oZ |
|
|
У= —0,01101 = — |
[у]обр= 1,10010 |
|||
|
|
|
|
10,11100 |
|
|
|
[*-f-(/Jogp = |
0,11101 |
Сравнивая цифру в знаковом разряде суммы с цифрами знако вых разрядов слагаемых, можно установить, есть переполнение разрядной сетки или нет. Признаком переполнения является от личие цифры знакового разряда суммы от цифры знаковых разря дов слагаемых.
Указанный способ сложен, так как требует запоминания знаков слагаемых и сравнение их со знаковым разрядом суммы.
При переполнении разрядной сетки модуль суммы удовлетво ряет неравенству
1 < \ х + у \ < 2 .
Это обстоятельство облегчает построение кодов, по виду кото рых можно определить переполнение разрядной сетки. Для этой цели в ЦВМ применяют модифицированные дополнительный и об ратный коды. В модифицированных кодах для изображения знака используются два знаковых разряда: положительные числа изобра жаются кодом 00, . . . , отрицательные числа — кодом ,1 1 ,...........
42
Модифицированный дополнительный код
Если х — правильная двоичная дробь, положительная или от рицательная, то модифицированным дополнительным кодом числа
называют число [x]“on, получаемое по формуле
|
|
( |
х, |
если |
х ^ О , |
|
|
|
Мдоп = { шо + л:, |
если |
х < 0 , |
(2Л9^ |
|
где |
100 |
означает число 4. |
отрицательного числа |
используется |
||
|
Для |
изображения знака |
||||
код |
11, |
, поэтому в цифровых разрядах изображения отрица |
||||
тельного числа записан код, |
равный |
|
|
|
100—0 1 1 + х = 1 —|* |,
т. е. дополнению абсолютного значения отрицательного числа до единицы.
Если х = -f 0, хгх2 . . . хп, то
[х]*оп=00, Xlx2 . . . хп. |
(2.20) |
Если х = —0, х±х2 . . . хп, то
Мдоп= 1 1 * ^ 2 • • • *«+ 10“ n, |
(2-21) |
т. е. для получения модифицированного дополнительного кода от рицательного числа необходимо в знаковых разрядах поставить код 11, в дробной части нули заменить единицами, а единицы ну лями и к младшему разряду полученного числа добавить единицу. Доказательство формулы (2.21) соответствует доказательству фор мулы (2.9) для обычного дополнительного кода.
Сложение чисел в модифицированном дополнительном коде про изводится так же, как и в обычных кодах. При возникновении еди ницы переноса левее двух знаковых разрядов ее необходимо отбра сывать. Окончательный результат суммирования будет в прямом коде, если сумма положительна, и в модифицированном дополни тельном коде, если сумма отрицательна.
Пример |
19. |
|
|
|
|
|
|
|
X= 0,1100001 = |
97 |
|
[< о п = |
00,110001 = |
97 |
|||
128 |
|
128 |
||||||
|
|
|
|
|
||||
|
|
|
|
|
|
|||
|
-0 ,1 0 0 0 0 0 1 = |
65 |
|
|
11,011111 = - |
63 |
||
у = ■ |
128 |
|
и С п = |
|
|
128 |
||
|
|
|
|
|
||||
х-\г у = |
0,0100000 = |
1 |
[* + |
< о п = 100,010000 = |
1 |
|||
4 |
4 |
|||||||
|
|
|
|
|
|
|||
|
|
|
1Х+ |
У]доп = |
00,01 |
= |
J _ |
|
|
|
|
4 |
|||||
|
|
|
|
|
||||
|
|
|
|
|
|
|
Положительный знак суммы свидетельствует о том, что алге браическая сумма получилась в прямом модифицированном коде.
Пример 20. |
|
|
|
* = -0,0111101 = - |
^ |
м ;„ „ = 11,1000011 = —g |
|
У = -0,0001011 = - |
Я |
[» С 0= |
11,1110101 = - ' Я |
х-{-у = — 0,1001000=---- -- |
и + г/]д0П= |
11Ь0111000 = |
|
|
16 |
|
7 |
|
|
= |
11,0111 = ------- - |
|
|
|
16 |
Отрицательный знак суммы говорит о том, что алгебраическая сумма получилась в модифицированном дополнительном коде.
Как видим из приведенных примеров, признаком отсутствия переполнения разрядной сетки является совпадение цифр в знако вых разрядах двоек и единиц, т. е. комбинация цифр 00 и 11. При знаком переполнения является несовпадение цифр в знаковых раз рядах двоек и единиц, т. е. комбинации 10 и 01, причем комбина ция 01 свидетельствует о переполнении при сложении положитель ных чисел, а комбинация 10 — отрицательных.
Пример 21. |
|
|
|
х = 0,0100001 = |
_33 |
[х)м |
=00,0100001 = — |
|
128 |
доп |
128 |
«/= 0,1100101 = |
101 |
1у]”оп = 00,1100101 = 101 |
|
|
128 |
1х +у £ |
128 |
Х ~\~У |
|
: 01,0000110 |
Комбинация 01 в знаковых разрядах свидетельствует о пере полнении разрядной сетки при сложении положительных чисел.
Пример 22.
99
х = —0,1100011 =
128
69
г/ = —0,1000101 =
128
I Х ~\~У| |
> 1 |
[ < пп = |
ОО |
о |
II |
29 |
|
128 |
|||||
|
|
|
|
||
г тМ |
|
|
|
_ 59 |
|
[у]л^ == 11,0111011 = |
128 |
||||
|
|
|
|
[* + i C = 110,1011000 =
=10,1011
Комбинация 10 в знаковых разрядах свидетельствует о переполне нии разрядной сетки при сложении отрицательных чисел.
Для автоматической сигнализации о переполнении разрядной сетки достаточно сравнить цифры в двух знаковых разрядах.
44
Модифицированный обратный код
Если х — правильная двоичная дробь, положительная или от рицательная, то модифицированным обратным кодом называют код
[л;]обр, получаемый по следующей формуле:
м |
| |
х, |
если |
х + |
О, |
^°бр |
( 100— 10~" + х, |
если |
х + |
(2. 22) |
|
0, |
где п — число разрядов дробной части, 100 — изображает число 4.
Если х = 0, хгх2х3 . . . хп, то
1*С$р = 00’ *1 *2 *3 • • • *„•
Если х — —0, XiX2x3 . . . хп, то
1*10бр = 11. ^1 х2х3 . . . хп, |
(2.23) |
т. е. для получения модифицированного обратного кода отрицатель ного числа необходимо в знаковых разрядах поставить код 11, а в дробной части нули заменить единицами, а единицы — нулями.
Доказательство формулы (2.22) аналогично доказательству фор мулы (2.17) для обычного обратного кода. Суммирование чисел в мо дифицированном обратном коде аналогично суммированию в обыч ном обратном коде. При появлении единицы переноса левее знако вых разрядов ее необходимо прибавить к младшему разряду резуль тата, т. е. осуществить циклический перенос. Результат суммиро вания получится в модифицированном прямом коде, если сумма положительна, и в модифицированном обратном коде, если сумма отрицательна.
Пример 23.
х = +0,1001001 = |
— |
|
[ < бр= |
00,1001001 |
|
|
|
128 |
|
|
|
у = — 0,0001111 = —— |
|
[ < бр= |
11,1110000 |
||
* |
_________ |
128 |
|
|
|
х + г/ = +0,0111010= + — |
[* + |
< б Р = |
100-0 1 11001 |
||
|
|
|
|||
|
|
|
___________1-.... -> 1 |
||
|
|
|
Iх +у ]"бр= |
0 0 ,0 1110 10 = + Ц - |
Положительный знак суммы свидетельствует о том, что алге браическая сумма получилась в модифицированном прямом коде.
45
Пример 24.
х — --0,0011111 |
= |
— — |
1 < бр = |
11,1100000 |
|
|
128 |
|
|
У= --0,0101101 |
= —— |
[ < 6 р = |
11,1010010 |
|
|
|
128 |
|
|
х + у = - -0,1001100 = |
— - |
|
111,0110010 |
|
|
|
32 |
|
|
|
|
|
[х + у]ыобр= |
11,0110011 |
Отрицательный знак суммы свидетельствует о том, что алгебраи ческая сумма получилась в модифицированном обратном коде.
Пример 25.
* = 0,1010001 = — |
М “б =00,1010001 |
||
|
128 |
" |
|
у = 0,0110001 = i i |
Л р = |
00,0110001 |
|
|
128 |
____________________ |
|
Х+ У |
> Г “ |
[* + < бр = |
01,0000010 |
Комбинация 01 в знаковых разрядах свидетельствует о пере полнении разрядной сетки при сложении положительных чисел.
Пример 26.
* = —0,1111001 = |
— 1 | |
[ < бр = |
11,0000110 |
|
У= —0,0010001 = |
—^ |
[ < бр = |
11,1101110 |
|
\х + у\ |
> 1 |
|
110,1110100 |
|
|
|
__________ 1 |
- 1 |
|
|
|
[ х + у ]0ибр= |
10,1110101 |
Комбинация цифр 10 в знаковом разряде свидетельствует о переполнении разрядной сетки при сложении отрицательных чисел.
Глава третья
ВЫ ПОЛНЕНИЕ АРИФ М ЕТИ ЧЕСКИХ ОПЕРАЦИЙ В Ц И Ф Р О В Ы Х ВЫ ЧИС ЛИТЕЛЬНЫ Х М А Ш И Н А Х
§I. ВЫПОЛНЕНИЕ ЭЛЕМЕНТАРНЫХ ОПЕРАЦИЙ
ВАРИФМЕТИЧЕСКОМ УСТРОЙСТВЕ
Косновным арифметическим операциям, выполняемым в цифро вых вычислительных машинах, относятся операции сложения, вы читания, умножения и деления.
Внутри арифметического устройства машины (АУ) выполнение любой арифметической операции расчленяется на ряд элементар ных операций, к числу которых могут быть отнесены: 1) прием ко дов чисел из запоминающего устройства (ЗУ) на входные регистры АУ; 2) преобразование в зависимости от конструкции ЦВМ прямых
кодов чисел в дополнительный или обратный коды и наоборот;
3)сдвиг кодов чисел вправо или влево; 4) сложение кодов чисел.
Взависимости от общей структуры ЦВМ исходные данные и результаты вычислений могут храниться в ЗУ в прямом, допол
нительном или обратном кодах (ПК, ДК, ОК).
Вбольшинстве ЦВМ информация в ЗУ хранится, как правило,
впрямом коде. В этом случае отрицательные числа перед выдачей из входных регистров в суммирующее устройство должны быть преобразованы в обычный, или модифицированный дополнительный, или обратный коды. Если результат суммирования двух чисел от
рицательный, то его необходимо перед выводом в ЗУ преобразо вать в прямой код.
Хранение информации в ЗУ в прямом коде затрудняет выполне ние операций сложения и вычитания, но облегчает выполнение операций умножения и деления, поскольку они выполняются обычно в прямом коде.
При выполнении операций умножения и деления в каждом такте используется операция сдвига. Операцией сдвига называется пере
мещение числовой последовательности х = |
± |
х хх 2х3 . . . хп влево |
или вправо на k разрядов. |
k |
разрядов эквивален |
Сдвиг положительного числа вправо на |
тен умножению его на 2~fc> сдвиг влево эквивалентен умножению числа на 2к.
47
Пример 1. Сдвинуть число х — 0,10111011 = — вправо на три
разряда
* = 0Ц0П 1Ю1 =0,00010111101 = 2~3 - — = - ^ - . |
|
’ |
256 2048 |
Пример 2. Сдвинуть число |
к |
х = 0,000101 = — влево на три раз- |
|
|
64 |
ряда
х = 0,(Ю010Г=0,101000 = 23- — = — .
64 8
Из-за ограниченной разрядной сетки при сдвиге вправо на k разрядов числовая последовательность х = ± 0,хгх 2х3 . . . хп за меняется последовательностью
х = +0,00 . . . 0 х{х2 . . . xn_ k
k нулей
Пример 3. Сдвинуть число В = + 0,11110111 вправо на 4 раз ряда, если разрядная сетка ЦВМ содержит 8 разрядов
В = ±0,11110111=0,00001111.
Как видно, при сдвиге вправо из-за ограниченной разрядной
сетки будут потеряны 4 младших разряда. |
последовательность |
|||
При |
сдвиге влево на k разрядов числовая |
|||
х = + |
0, х±х2х3 . . . хп заменяется |
последовательностью |
||
|
* = ± 0, xl+k . . . |
хп 00 |
• • • |
0. |
|
|
k |
нулей |
|
Пример 4. Сдвинуть число х — |
+ 0,10011 на три разряда влево |
х = ± 0,10011= + 0,11000.
При сдвиге влево в нашем примере вышли за разрядную сетку три старших разряда.
При сдвиге отрицательных чисел, представленных в дополни тельном или обратном кодах, применяется модифицированный сдвиг.
При |
модифицированном |
сдвиге вправо коды [х]доп, [х]обр, |
|
1х]доп и |
[х 1обр сдвигаются |
вправо на k разрядов, а освободив |
|
шиеся старшие разряды заполняются единицами. |
|||
Пример |
5. Осуществить |
модифицированные сдвиги вправо на |
|
2 разряда, |
если |
|
К о п = 11,0101111; [ < бр = 11,0011111;
48
[*]"„„ = И .OlOl111 = 00,1101°11 и + и , 0 = 11,110101111;
[х]“бр = 11,0011111 =00,110011111 -Ь 11,0= 11,110011111.
При модифицированном сдвиге влево коды Ц ]доп и [х 1дОП сдвигаются на k разрядов влево. Разряды, старше знакового, вы ходят за пределы и пропадают.
Пример 6. Сдвинуть влево на 2 разряда коды
[%]“ 11,0010101, Ш =1,010101,
Ц]м = 11,0010101 = 00,1010100 ,
[х] п = 1 ,0 1 0 1 0 1 = |
1,010100. |
При модифицированном сдвиге |
влево коды Ц ]обр и [х]“бр |
сдвигаются на k разрядов влево. Разряды левее старшего знако вого пропадают. Освободившись при сдвиге, младшие разряды за полняются единицами.
Пример 7. Сдвинуть на два разряда коды
[ < бр= 11,11011011, [*]обр = 1,11П0101,
[х]“бр = 11,110П011 = 11,01101100 + 00,0 . . . 011 = 11,01101111,
[х]обр = 1,11110101 = 1,11010100 + 0,0 . . . 011 = 1,11010111.
§ 2. ВЫПОЛНЕНИЕ ОПЕРАЦИЙ СЛОЖЕНИЯ И ВЫЧИТАНИЯ В ЦВМ С ФИКСИРОВАННОЙ ЗАПЯТОЙ
При выполнении операций сложения и вычитания в АУ произ водится алгебраическое суммирование чисел с учетом знаков.
При сложении чисел, имеющих одинаковые знаки, или при вы читании чисел с разными знаками в АУ производится арифметиче ское сложение чисел. При сложении чисел, имеющих разные знаки, или при вычитании чисел, имеющих одинаковые знаки, произво дится арифметическое вычитание чисел.
Как указывалось выше, в главе второй, операция вычитания в ЦВМ сводится к операции арифметического сложения при пред ставлении отрицательных чисел в обычном или модифицированном дополнительном или обратном кодах. Правила сложения чисел, представленных в обычном или модифицированном дополнитель ном или обратном кодах, подробно рассмотрены в главе второй настоящего пособия.
4 З а к а з № 2437 |
49 |