Алгебраическое сложение чисел, представленных в форме с фиксированной запятой


 

Структурные схемы двоичных сумматоров, предназначенных для выполнения алгераического сложения чисел представленных в обратном и дополнительном кодах приведены на рисунке 4.1 в) и б) соответственно, а на рисунке 4.1 а) - для арифметического сложения чисел, представленных в прямом коде. На этих рисунках символами Sg обозначаются значения знаковых битов операндов и результата.

 

а)

a1 SM c1 a2 SM c2 an SM cn Sga SM

b1 b2 bn

P0 P1 P2 Pn-1

 

1 2 n

б)

a1 SM c1 a2 SM c2 an SM cn Sga SM

b1 b2 bn Sgb

P0 P1 P2 Pn-1 Pn

 

1 2 n

в)

a1 SM c1 a2 SM c2 an SM cn Sga SM

b1 b2 bn Sgb

P0 P1 P2 Pn-1 Pn

 

1 2 n

 

Рис. 4.1

 

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

Если оба операнда представлены в прямом коде и имеют одинаковые знаки, то над такими операндами выполняется процедура сложения и результату присваивается знак исходных операндов.

Рассмотрим примеры:

 

1) 210 + 410 = 610 2) -210 - 410 = -610

0. 0010 а) 1. 1110 б) 1. 1101

+ 0. 0100 + 1. 1100 + 1. 1011

0. 0110 = 610 1 1. 1010 = -610 1 1. 1000

+1 коррекция

1. 1001 = -610

 

Во втором примере оба отрицательных слагаемых представлены либо в дополнительном коде (а), либо в обратном коде (б). В первом случае результат получен в дополнительном коде, а во втором, после коррекции, - в обратном.

Если же операнды имеют разные знаки, то должна выполняться процедура вычитания. Но, как уже отмечалось, процедуру вычитания заменяют процедурой сложения, отрицательный операнд (вычитаемое) представляют в обратном или дополнительном коде, а положительный операнд - в прямом коде.

Например:

 

1) 410 - 210 = 210

а) 0. 0100 б) 0. 0100

+ 1. 1110 + 1. 1101

1 0. 0010 = 210 1 0. 0001

+1 коррекция

0. 0010 = 210

2) 410 - 410 = 0

а) 0. 0100 б) 0. 0100

+ 1. 1100 + 1. 1011

1 0. 0000 = 010 1. 1111

+1 коррекция

1 0. 0000 = 010

3) 210 - 410 = -210

а) 0. 0010 б) 0. 0010

+ 1. 1100 + 1. 1011

1. 1110 = -210 1. 1101 = -210 коррекции нет.

 

В примерах 1а) и 2а) единица, выходящая за разрядную сетку, не учитывается ("теряется").

Как видно из примеров процедура алгебраического сложения с дополнительными кодами проще, чем с обратными кодами, т.к. в последнем случае при возникновении единицы переноса за пределы разрядной сетки, выделенной для числа в формате с фиксированной запятой, приходится корректировать результат с помощью дополнительной процедуры прибавления единицы к результату. Нулевой результат получается или в прямом коде или же в обратном, что также требует коррекции результата. Поэтому в настоящее время на практике для представления отрицательных операндов используется в основном дополнительный код.

Таким образом, перед выполнением самой процедуры алгебраического сложения в дополнительном коде нужно проанализировать знаки слагаемых. Если они разные, то выполняется алгебраическое сложение (фактически вычитание) без проверки на переполнение результата, т.к. его в этом случае просто не может быть. Но контролируется чтобы в результате не появился запрещенный отрицательный ноль. Если же у исходных операндов знаки одинаковы, то такой же знак предварительно присваивается результату и выполняется само сложение. Если знак окончательного результата не совпадает с предварительно присвоенным знаком, то это является признаком переполнения и следовательно, неправильного результата.

Еще раз подчеркнем, что результат алгебраического сложения операндов представленных в обратном и дополнительном кодах получается также в обратном и дополнительном коде соответственно.

 

 



Дата добавления: 2016-07-18; просмотров: 2744;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.008 сек.