Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дубинин Н.М. Методические указания по курсовому проектированию.DOC
Скачиваний:
29
Добавлен:
02.05.2014
Размер:
668.16 Кб
Скачать

6.2.1 Суммирование чисел с фиксированной запятой перед старшим разрядом

Варианты алгебраического суммирования в обратном и дополнительных кодах при представлении исходных чисел и суммы в прямом коде представлены в таблице 2.

Таблица 2.

Изображение числа

Представление суммы. Необходимость коррекции

Код

X0

X<0

X,Y>0

X+Y<1

X> 0, Y < 0

X+Y > 0

X > 0, Y<0

X+Y < 0

X < 0, Y <0

½X+Y½<1

1

2

3

4

5

6

7

[X]n

X

1+½X½

[X]0

X

2+X-2-n

X+Y

нет

X+2+Y-2-n

корр.:

-2+2-n

X+2+Y-2-n

нет

2+X-2-n+2+Y-2-n

корр.:

-2+2-n

[X]д

X

2+X

X+ Y

нет

X+2+Y

корр.:

-2

X+2+Y

нет

2+X+2+Y

корр.:

-2

В колонках 4 - 7 указаны представления суммы для четырех возможных вариантов алгебраического сложения. В колонках 4, 6 представления суммы совпадают с правильным результатом, поэтому необходимости в коррекции нет. В колонке 5 правильным представлением суммы для обратного и дополнительного кодов чисел является: Х+Y, поскольку в результате алгебраического суммирования получено положительное число. Поэтому для получения правильного результата необходимо произвести коррекцию: для обратного кода вычесть “1” из разряда с весом и прибавить единицу к младшему разряду суммы, а для дополнительного кода - вычесть “1” из разряда с весом . Для колонки 7 правильными представлениями суммы для обратного кода является 2+(X+Y)-2-n , а для дополнительного кода- 2+(X+Y) в соответствии с колонкой 3. Для получения правильных сумм необходима коррекция -2+2-n и -2 для обратного и дополнительного кодов соответственно.

Таким образом, при алгебраическом суммировании в обратных кодах нужны определенные аппаратные средства для реализации коррекции результата. Для этой цели служит так называемая цепь циклического переноса, связывающая разряды сумматора с весами 21 и 2-n. При алгебраическом сложении в дополнительных кодах единица, появляющаяся в разряде сумматора с весом 21, не учитывается (теряется). Так, например:

1.[Х]n = 0.1011 +[Х]0 = 0.1011 2. [Х]n = 1.0101 +[Х]0 = 1.1010

[У]n = 1.1001 [У]0 = 1.0110 [У]0 = 1.0111 [У]0 = 1.1000

+10.0001 11.0010

>1 > 1

0.0010 1.0011

3.[Х]n = 0.1001 +[Х]d = 0.1001 4. [Х]n = 1.1101 +[Х]d = 1.0011

[У]n = 1.0001 [У]d = 1.1111 [У]n = 1.1010 [У]d = 1.0110

< 10.1000 < 10.1001

В примере 4 после коррекции получаем положительное число, хотя суммировали два отрицательных. Этот пример иллюстрирует общий недостаток методик алгебраического суммирования чисел в обратных и дополнительных кодах - они не позволяют без специальных аппаратурных затрат фиксировать переполнение. Этот недостаток исключается при использовании модифицированных обратного и дополнительного кодов.