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




Введение

В общем виде число А в p -ной позиционной системе счисления представляется в виде:

A = an*pn+an-1*pn-1+…+a1*p1+a0*p0+a-1*p-1+a-2*p-2+…+a-m*p-m =

=

 

При k = Const получается число с фиксированной точкой:

k=0: правильная дробь – число с фиксированной запятой

A = a-1*p-1+a-2*p-2+…+a-m*p-m

k=r: целое число – число с фиксированной точкой

A = an*pn+an-1*pn-1+…+a1*p1+a0*p0

При k ≠ Const получается число с плавающей запятой.

 

Данная лабораторная работа посвящена изучению чисел с фиксированной точкой. При дальнейшем описании мы будем ориентироваться на числа с фиксированной запятой в этом классе представления чисел. Однако все представленные теоретические обоснования легко экстраполировать и на числа с фиксированной точкой в строгом смысле этого термина.

 

Прямой код. Возможны два варианта изображения знаков чисел двоичными цифрами:

«+» обозначать «0», а «-» обозначать «1»;

«+» обозначать «1», а «-» обозначать «0».

Оба варианта равноценны.

На практике в основном используется первый вариант. При таком решении все положительные числа имеют вид: 0,..., а отрицательные: 1,.... В данном случае знаковая цифра (код знака) помещается слева от запятой на место разряда с весом 2° (рис.).


 

Зн 2n-1 2n-2 20

 

Рис. Представление числа с фиксированной запятой в прямом коде.

 

 
 

Если знак и цифровую часть числа рассматривать как единое целое, то изображение положительных чисел не изменяется и определяется интервалом 0 ≤ х < 1, а все отрицательные числа изображаются положительными числами [х]пк, расположенными в интервале 1 ≤ [х]пк<2. Рассмотренную связь между числом х и его изображением в прямом коде — [х]пк можно представить в виде:

Таким образом, число, заданное в прямом коде, можно описать следующим образом:

Хпк = ЗнХ.|X|

Примеры: +510 = 0.1012пк

-510 = 1.1012пк

 

Методика выполнения алгебраического сложения, рациональная для применения в ЭВМ, должна удовлетворять следующим условиям:

• обработка знаковых и цифровых разрядов суммируемых чисел X и Y должна производиться по одинаковым правилам с получением при этом правильного знака суммы;

• должна исключаться операция прямого вычитания, и вместо неё алгебраическое суммирование чисел разных знаков должно выполняться как сложение специальных кодов суммируемых чисел;

• должно определяться переполнение, соответствующее
| X + Y | ≥ 1 при условии, что абсолютное значение X и Y меньше единицы.

 

Числа, представленные в прямом коде, не соответствуют данным условиям, в частности, пункту 2. Поэтому для арифметических операций в ЭВМ прямой код представления чисел практически не используется.

 

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

 

Обратный код. В этом коде связь между числом х и его изображением в обратном коде [х]окопределяется равенством:

 
 

Покажем, как практически представить в обратном коде отрицательное число. При х ≤ 0: Xок = 2 + х – 2-n = 2 - |x| - 2-n:

_10.00...00 2

00.00...01 2-n

1.11...11 2 - 2-n

 

_1. 1 1... 1 1 2 - 2-n

0.x1x2...xn-1xn |x|

0. x̅12...x̅n-1n

Таким образом, для отрицательного числа получение обратного кода заключается в присвоении знаковому разряду кода 1 и замене 0 на 1, а 1 на 0 в цифровой части модуля числа.

Примеры: +510 = 0.1012пк = 0.1012ок

-510 = 1.1012пк = 1.0102ок

 

При обратном преобразовании, о есть при переходе от обратного кода к прямому, от обратного кода берется обратный код.

 

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

Возможные комбинации, которые могут встретиться при операции сложения.

1). Х>0 и Y >0, а X + Y<1. В данном случае, обращение к обратному коду не приводит к специфике выполнения операции, так как [Х>0]о + [ Y >0]о = X + Y.

1a). Х>0 и Y>0, а X + Y≥1.

Эта ситуация трактуется в ЭВМ как положительное переполнение, т.к. по определению числа с фиксированной запятой его модуль должен быть строго меньше 1. В данном формате полученный результат не может быть представлен. При этом необходимо лишь зафиксировать факт появления такой ошибки. Её определение базируется на том факте, что в данном случае суммирование приводит к появлению 1 в позиции с весом 21, то есть в знаковом разряде результата. Обратный код не приспособлен для автоматической фиксации переполнения. Определить положительное переполнение можно по наличию 1 в знаковом разряде результата при положительных обоих слагаемых.

 

2). Х>0, Y<0 и X + Y>0.

[Х]ок + [Y]ок = X + 2 + Y - 2-n – предварительный результат.

Т.к. X + Y>0, то действительный результат равен X + Y. Для того чтобы от предварительного результата перейти к действительному, необходима коррекция: вычесть 2 и прибавить 2-n к предварительному результату, т.е. в предварительном результате исключается 1 в разряде с весом 21, что равноценно вычитанию 2, и эту же единицу направлить в младший разряд предварительного результата, что равноценно прибавлению 2-n.

 

3) Х>0, Y<0 и X + Y <0.

[Х]0 + [У]0 = X + (2+Y - 2-n). Этот результат соответствует правильному, так как согласно условию

X + Y<0 и [X + У<0]о = 2 +(X + У) - 2-n.

 

При суммировании в обратном коде чисел разных знаков возможно получение результата, равного нулю: X + Y = 0. Здесь методика суммирования обратных кодов исходных чисел не изменяется, а результат получается в виде 1,1...1. Например,

[Х]пк = 0,1011 [Х]ок = 0,1011

[Y]пк = 1,1011 [Y]ок= 1,0100

[Х + Y]0=1,1111

Получили обратный код отрицательного нуля:

[- 0,0... 0 ]ОК = 1,1... 1.

Такой результат согласуется с формулой, где указано, что X = 0 может иметь двоякое изображение: код положительного нуля и код отрицательного нуля. Однако в ЭВМ каждое число должно иметь однозначное представление. Поэтому при получении в качестве результата кода отрицательного нуля при выполнении операции сложения чисел в обратном коде аппаратные средства ЭВМ преобразуют его в код положительного нуля 0,0... 0, и в таком виде результат отправляется на хранение в приёмник результата.

 

4) Х<0, У<0 и |Х + У|<1.

[X]ОК + [Y]ок = (2 + X - 2-n ) + (2 + Y -2-n) - предварительный результат.

Правильный результат [(X + У)<0]ок = 2+Х + Y - 2-n.

Это определяет необходимость выполнения коррекции предварительного результата, которая аналогична рассмотренной в случае 2, т.е. вычесть 2 и прибавить 2-n к предварительному результату.

4a). Х<0, Y<0, а |X + Y|≥1.

Эта ситуация трактуется в ЭВМ как отрицательное переполнение. Определить отрицательное переполнение можно по наличию 0 в знаковом разряде результата при отрицательных обоих слагаемых.

 

 
 

Дополнительный код. Здесь связь между числом X и его изображением в дополнительном коде [Х]дк определяется равенством:

 

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

Примеры: +510 = 0.1012пк = 0.1012ок= 0.1012дк

-510 = 1.1012пк = 1.0102ок = 1.0112дк

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

 

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

Рассмотрим четыре случая:

1) Х>0, Y>0, a X + У < 1. Как и при обратном коде, суммирование дополнительных кодов не вносит каких-либо изменений в операцию сложения.

 

2) Х>0, Y<0 и Х+Y>0.

[Х]дк + [Y]дк = X + 2 + Y – предварительный результат.

Правильный результат при Х+Y>0 равен X + Y.

Выполняется коррекция, равная вычитанию 2 из предварительного результата (исключение в нем 1 с весом 21).

 

3) Х>0, У<0 и Х+У<0.

Здесь

[Х] дк + [Y]дк = X + (2 + Y) = 2 + (X + Y) дает правильный результат без коррекции.

 

4). Х<0, Y<0 и |Х+Y|<1.

[Х]дк+ [Y]дк = (2 + Х) + (2 + Y) = 2 + 2 + X + Y, получаем результат, который отличается от правильного [(X + Y)<0]дr = 2 + (X + Y) на 2.

Необходима и здесь коррекция, рассмотренная в случае 2, т.е. вычитание 2 из предварительного результата (исключение в нем 1 с весом 21).

 

Методика выполнения операции не изменяется, когда

[Х]дк + [У]дк = 0.

Например,

[Х]пк = 0,1100 [Х]дк = +0,1100

[У]пк= 1,1100 [У]дк = 1,0100

0,0000

 

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

 


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

В модифицированных кодах кодирование знака осуществляется
2-мя разрядами:

«+» кодируется как «00»

«-» кодируется как «11».

 
 

При этом изображение числа X в этих кодах определяется равенствами:

Это позволяет автоматически определить переполнение при выполнении операции алгебраического суммирования: комбинация 01 в знаковых разрядах результата свидетельствует о положительном переполнении (X+Y ≥ 1), а комбинация 10 – об отрицательном переполнении (X+Y ≤ -1).

При этом основная методика выполнения операций алгебраического суммирования в обратном и дополнительном кодах не меняется:

- при алгебраическом суммировании в модифицированном обратном коде «1», выходящая за пределе знаковых разрядов, должна быть добавлена в младший разряд предварительного результата,

- при алгебраическом суммировании в модифицированном дополнительном коде «1», выходящая за пределы знаковых разрядов, отбрасывается.



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-12-08 Нарушение авторских прав и Нарушение персональных данных


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