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

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

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

Пример 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

 

+ у ]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

 

 

 

+у ]"бр=

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обр сдвигаются

вправо на 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

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