8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 82 83 84 85 86 87 88 ... 119

1

1

1

0

0

0

0

0

1

1

+

0

0

0

0

1

0

0

1

0

0

1.

0

0

1

0

0

Введем обозначения:

г v/i д / О.Х, если X > О, [Л ]д - ап.А - 1Wx если Xi<Qf

rvi -a r - j °-r> если y °> l Ш - n - \ l.Wy, если У < О,

r c/i г- / если 5> О, W " 7ni1 ~ \ l.Ws, если 5 < О,

где А = а„ 1 .. .ai«o, В = /?n i .. ./З1Д0, Г = 7„ ! .. .7170; а„, и 7„ - знаковые разряды; Wx = 2" - A, Wy = 2" - Y и W5 = 2П - 5 - дополнения до 2П; А" = А, К = У и 5 = 5 - модули соответствующих чисел.

Теорема. Дополнительный код ириф.метической суммы S двух двоичных чисел X и Y любых знаков равен арифметической сумме дополнительных кодов чисел, т. е.

[5]д = [А" + У]д = [А"]д + [У]д,

причем при сложении чисел одинакового знака разрядная сетка не должна переполняться. Если X > О, Y > О и А-ЬУ > 2п, то происходит потеря значения +2П и изменение знака остатка суммы на противоположный. Если же X < 0 и Y < 0, то потеря значения -2П и изменение знака остатка суммы на противоположный происходит при \Х\ + \Y\ > 2n + 1.

Д оказательство. Требуется показать, что

[5]д = [А]д + [У]д = 7п Г = ап.А + /?„-В

при отсутствии переполнения разрядной сетки. Для знакового разряда суммы имеет место соотношение:

о, / °. если А + В < 2",

In - ап ф рп Ф с„, с„ - если А + в > 2»,

где с„ - перенос из п - 1-го разряда.

Для доказательства теоремы необходимо рассмотреть три комбинации значений слагаемых: X > 0 и У < 0 (случай X < 0 и У > О переименованием чисел сводится к первой комбинации), X > 0 и У > О, А < 0 и У < 0.

1.Пусть X > 0 и У < 0, тогда

[А]д + [У]д = 0.А + 1.WV, 7п = 0 Ф 1 Ф с„ = с„, А + WV = X + (2" - У) = 2" + (А - У). Если А - У > 0, то с„ = 1, 7„ = 0 и

[А]д+[У]д = 0.5=[5]д,

где S = X - Y.

Если же X - У < 0, то с„ = 0, 7„ = 1 и

[А]д + [У]д = 15 = [5]д,

где = 2" - (У - А) = 2" - 5.

2.Пусть А > 0 и У > 0, тогда

[А]д + [У]д = 0.А + 0.У, 7п = 0 ф 0 Ф с„ = с„. Если А + У < 2", то с„ = 0, 7„ = 0 и

[А"]д + [У]д = 0.5=[5"]д,

где 5= А + У.

Если же А + У > 2", то с„ = 1, 7„ = 1 и

[А]д+[У]д=1.7„-1...717о>

где 7n i .. .7170 = А + У - 2" - остаток от суммы А + Y при переполнении разрядной сетки. Этот остаток имеет отрицательный знак, хотя суммировались положительные числа А и У, т.е. при переполнении разрядной сетки происходит изменение знака суммы с потерей значения суммы 2".

3.Пусть А < 0 и У < 0, тогда

[А]д + [У]д = l.Wx + l.WV, 7n = 1 Ф 1 Ф с„ = с„, Wx + WY = 2" + (2n - А - У) = 2" + (2n - S),

где 5 = А+У.

Если 5 < 2", то с„ = 1, 7„ = 1 и*

[Ah + [yb = l.s = [5b

где Ws = 2" - 5.

Если же 5 > 2", то с„ = 0, 7П = 0 и

[А]д+[У]д-0.7„-1...717о,

где 7„ 1 ... 7i 7о = 2" - (S - 2") - дополнение остатка 5 - 2" до 2" при переполнении разрядной сетки. Это дополнение остатка до 2" имеет положительный знак, хотя суммировались отрицательные числа А и У, т.е. при переполнении разрядной сетки происходит изменение знака суммы с потерей значения суммы -2". Что и требовалось доказать.

зз*

т.е. вычислить число У = уп-\ • У1У0, сложить полученное число Y с единицей, т.е. вычислить число Y + 1; записать 1 в га-й разряд.

В качестве примера рассмотрим отыскание дополнительного кода числа Y = -28:

242322212°- веса разрядов,


Из теоремы следует, что для сложения и вычитания двоичных чисел, представленных в дополнительном коде, может быть использован один и тот же двоичный сумматор. Эта же теорема справедлива и для сложения дробных двоичных чисел любого знака, представленных в дополнительном коде, так как положение запятой в записи числа не изменяет свойств дополнительного кода. Операции, выполняемые двоичными сумматорами и синтез последовательного двоичного сумматора, были рассмотрены в § 4.3.

Рассмотрим теперь преобразование дополнительного кода (6.40) отрицательных чисел в прямой код. Так как дополнение W = 2n - Y, то Y = 2п - W. Поэтому

n-1n-1п-1п-1

Y = 2 241-2 Wi2{ = £(l-u>i)-24l =+ 1 =Й?+1>

«=0t=0t=0«=0

где W = wn-i ... W\Wo, W = wn-i ..wiw0. Из этого следует, что правила перевода дополнительного кода в прямой аналогичны правилам перевода прямого кода в дополнительный.

Рассмотрим пример вычисления суммы А = +44 и У = -96 (5 = 44 - 96 = -52) в дополнительном коде. Сначала необходимо представить числа А и У в дополнительном коде:

26

25

24

23

22

21

2°-

- веса разрядов,

0

1

0

1

1

0

0 =

А + 44,

0.

0

1

0

1

1

0

0 =

[А]д,

1

1

0

0

0

0

0 =

У = У = +96,

0

0

1

1

1

1

1 =

У,

+

0

0

0

0

0

0

1 =

+ 1,

0

1

0

0

0

0

0 =

Y + 1,

1.

0

1

0

0

0

0

0 =

[УЫ-

Затем вычисляется арифметическая сумма дополнительных кодов [А]д и [У]д:

0.0101100= [Х]д, + 1.0100000= [У]д, 1.1001100= [А]д + [У]д = [5]д.

Далее выполняем перевод дополнительного кода [5]д = 1.W суммы S = X + У в прямой код:

- Iх»

при отсутствии переполнения, при переполнении

(значения ss = xs и ss = xs следуют из теоремы сложения чисел в дополнительном коде). Отсюда

OVR = с5+1 ф cs = xs ф ss =

Г xs ф xs = 0 при отсутствии переполнения, ~ \ xs ф xs = 1 при переполнении.

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

[-Х]0 = [-А-]д-1,

так как [-Х]о = (1,Х), а [-Х]д = (1,Т) + 1.

Сложение чисел в обратном коде. Установим правило сложения чисел в обратном коде, используя связь между прямым и дополнительным кодами. Для этого покажем, что это правило определяется соотношением

[5]о = [А]о + [У]о + сп,

где с„ - перенос в n-й разряд из знакового разряда, т. е. перенос с„ следует подать на вход переноса первого разряда двоичного сумматора. Будем полагать, что при сложении чисел X и У разрядная

2625242322212°- веса разрядов, 1. 1 0 0 1 1 0 0 = [5]д,

0 1 1 0 0 1 1 = ЙЛ + 000000 1 = +1,

0 1 1 0 1 0 0 = 5 = +52, 1. 0 1 1 0 1 0 0 = [5]п.

Переполнение разрядной сетки может наступить только при сложении чисел одинакового знака. Покажем, что функция OVR = cs+i © cs, где cs - перенос в знаковый разряд и с5+1 - перенос из знакового разряда, равна 1 только при переполнении разрядной сетки (OVR - Overflow - переполнение). Пусть xs, ys, ss - знаковые разряды чисел и их суммы (5 - Sign - знак). Если числа разного знака, то xs = ys и

Cs+i = xays V xsca V yscs = cs, OVR = cs+i © cs = 0.

Если же числа имеют одинаковый знак, то xs = ys и

ss = xs ф ys ф cs = cs, cs+i = xsys V xscs V yscs = xs,


сетка не переполняется, а значит не изменяется знак суммы S на противоположный.

Справедливость правила сложения чисел в обратном коде для случаев А > О, X < 0 и У = О (А" = 0 и У > О, У < 0) проверяется непосредственно на основании приведенного определения этого правила. Например, при X = У = 0 получим, что

[S]o = [0]o+[0]o + cn = 1.1...11 + 1.1...11 + с.

Из данного соотношения видно, что из знакового разряда возникает перенос, т.е. с„ = 1. Поэтому обратный код суммы [S] = 1.1... 1 - отрицательный нуль. Рассмотрим другие возможные случаи сложения чисел Л и У.

Пусть Л > 0 и У > 0, т.е. суммируются положительные числа Л и У. В этом случае сумма S > 0 и дополнительный код суммы:

[S]a = [X}M + [Y}a = 0.X + 0.Y.

Из данного выражения видно, что перенос из знакового разряда возникнуть не может, т.е. перенос с„ = 0, а значит

[5]о = [А1о + [У]о = [5]д,

так как обратный и дополнительный коды положительных чисел совпадают, таким образом, сформулированное правило сложения чисел в обратном коде справедливо при А > 0 и У > 0.

Пусть X > 0 и У < 0, т.е. суммируются числа X и У - -Y. В этом случае сумма S может иметь любой знак. Дополнительный код суммы определяется соотношением

[5]д = [А]д + [-У]д = 0.А + 1.У + 1.

Если сумма S < 0, то перенос из знакового разряда не возникает (сп = 0), так как иначе знак суммы изменился бы на противоположный. Поэтому обратный код суммы:

[5]о = [А]о + [-У]о-[5]д-1, как и должно быть на основании связи обратного и дополнительного кодов отрицательных чисел. Если же сумма S > 0, то из выражения для дополнительного кода суммы следует, что должен возникать перенос из знакового разряда (с„ = 1), так как в противном случае знак суммы изменился бы на противоположный. Поэтому обратный код суммы

[5]о = [А]о + [-У]о + 1 = [5]д,

как и должно быть, так как обратный и дополнительный коды положительных чисел совпадают. При У = -X сумма S = 0 и обратный код суммы

[5]о = [А]о + [-А]0 = 0.А + 1.Х = 1.1... 11, т. е. в результате суммирования получается отрицательный нуль. Положительный и отрицательный нули при выполнении арифметических операций эквивалентны друг другу, т.е. появление отрицательного нуля не приводит к ошибкам в вычислительном процессе. Таким

образом, при X > 0, У < 0 сформулированное правило сложения чисел в обратном коде справедливо. Случай X < 0 и У > 0 аналогичен случаю X > 0 и У < 0, поэтому рассматривать его нет необходимости.

Пусть, наконец, X < 0 и У < 0, т. е. суммируются отрицательные числа. В этом случае сумма S < 0 и дополнительный код суммы

[5]д = [-А]д + [-У]д = 1.Х + 1 + 1.У + 1.

Поскольку сумма S < 0, то должен возникать перенос из знакового разряда (с„ = 1), так как в противном случае знак суммы изменился бы на противоположный. Поэтому обратный код суммы

[5]о = [-А]0 + [-У]о + 1 = [5]д - 1,

как и должно быть на основании связи обратного и дополнительного кодов отрицательных чисел. Таким образом, сформулированное правило сложения чисел в обратном коде справедливо при X < 0 и У < 0.

Преимуществом обратного кода является простота его получения. В частности, для получения обратного кода положительного числа А, умноженного на -1, достаточно проинвертировать все разряды обратного кода этого числа X. Недостатком использования обратного кода является меньшее быстродействие сумматора, так как перенос из последнего (знакового) разряда подается на вход переноса первого разряда, что при равенстве данного переноса единице может заново вызвать в сумматоре переходный процесс.

Код с избытком 3. Десятичные сумматоры применяются в тех случаях, когда числа А и У представлены в десятичной системе счисления двоично-десятичным кодом 8-4-2-1 и требуется представлять сумму S в этом же коде. Числа А и У записываются в виде:

А = An iAiA0 и У = УП-1У1У0, где Ар = xP3xp2xPixPo, Ур = УРзУР2УР1УРо - десятичные разряды чисел, представленные 4-разрядным двоичным кодом 8-4-2-1.

Код 8-4-2-1 неудобен для выполнения арифметических операций, в частности из-за сложности обнаружения переноса в следующую тетраду при Ар + Ур > 10. При вычитании десятичных чисел А и У дело обстоит еще сложнее - требуется вводить преобразователь кода 8-4-2-1 отрицательных чисел в дополнение до 9 (иЛи до 10).

Десятичные сумматоры для сложения и вычитания чисел А и У можно построить на двоичных сумматорах, если использовать код с избытком 3. Код 8-4-2-1 для числа Ар + 3 называется кодом с избытком 3 числа Ар и обозначается через {Ар}. Для сложения 4-разрядных двоичных кодов {Ар} и {Ур} можно использовать 4-разрядные двоичные сумматоры.

Рассмотрим особенности сложения положительных чисел Ар и Yp в коде с избытком 3. Если Ар + Ур > 10, то {Ар} + {Ур} = Ар + 3 + Ур + 3 > 16, и на выходе двоичного сумматора возникает перенос Cp+i = 1 в следующий десятичный разряд, а остаток суммы будет равен (Ар} + {Yp} - 16, в то время как он должен быть равен {Ар +



0 ... 82 83 84 85 86 87 88 ... 119