Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DOC-20170201-WA0001.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
864 Кб
Скачать
☆

Прямой код

Прямой код соответствует обычной записи числа со своим знаком. Положительное число имеет в знаковом разряде символ 0, отрицательное – 1. Прямой код обозначают [A]пр, а знаковый разряд отделяют от цифровых разрядов точкой. Количество разрядов целой части числа обозначают n, а количество разрядов дробной части числа m. Для положительных чисел существует только прямой код.

Ч исла в прямом коде представляются в форме:

при А ³ 0 [A]пp = 0.an-1an-2 … a1a0,a-1 … a-m;

( 2.1 )

при А £ 0 [A]пр = 1.an-1an-2 … a1a0,a-1 … a-m ;

Число ноль в прямом коде имеет два изображения:

+ 0 : [0]пр = 0.00…0, - 0 : [0]пр = 1.00…0.

Рассмотрим случай байтового представления чисел.

Если число больше нуля, то в знаковом разряде записывают «0», а если меньше, то «1».

Пример №1. Представить числа А = 110112, В = -10102 в прямом коде.

Обратный код

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

Ноль в обратном коде имеет два представления:

+ 0 : [0]обр = 0.00 … 0, - 0 : [0]обр = 1.11 … 1.

Пример №2

Получить обратный код для числа А = -10101,10112 при n=5, m=4.

[ A]пр = 1.10101,1011

[A]обр = 1.01010,0100

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

Дополнительный код

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

Пример №3

Получить дополнительный код для чисел: A=+1001,101(2), B=-1000,010(2) при n=4, m=3.

[A]пр=0.1001,101 [A]пр.= [A]обр.= [A]доп

[В]пр=1.1000,010

Для образования прямого кода отрицательного числа из дополнительного кода следует вычесть единицу младшего разряда (получим обратный код) и инвертировать все разряды, т.е. заме­нить 1 на 0, а 0 на 1 (получим прямой код).

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

Ноль представляется в дополнительном коде:

+0: [0]доп.= 0.000…00 ,

- 0: [0]доп.=1.111 … 1

+ 1

[0]доп.=0.000 … 0 ,

т.е. ноль в дополнительном коде имеет единственное представление.

Переполнение разрядной сетки

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

Для обнаружения переполнения разрядной сетки используют следующие способы:

1. Сравнивают знаки слагаемых со знаком суммы. Сигнал переполнения вырабатывается тогда, когда знаки слагаемых одинаковы и не совпадают со знаком суммы.

2. Второй способ основан на применении модифицированных кодов. Модификация кодов заключается во введении дополнительного разряда, который располагается перед знаковым. Этот разряд часто называют разрядом переполнения. Иногда говорят, что модифицированные коды содержат два знаковых разряда. Положительные числа имеют в знаковых разрядах два нуля, отрицательные – две единицы. При использовании модифицированных обратного и дополнительного кодов признаком переполнения разрядной сетки является наличие в знаковых разрядах различных цифр 01 или 10.

Пример №4

Вычислить С = А + В в обратном коде. А = + 1101,12; В = + 1011,02; n=4, m=1.

Для вычисления сначала необходимо числа А и В перевести в прямой код. [А]пр= 0. 1101,1; [В]пр= 0.1011,0. Так как числа А и В положительные, поэтому

[А]обр = [А]пр

[В]обр = [В]пр

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

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

Пример №5

Вычислить С = А + В в дополнительном коде с проверкой в десятичной системе счисления. А = - 10112; В= - 1002; n=5, m=0.

Для вычисления необходимо А и В перевести в прямой код.

Из исходных данных видно, что числа А и В отрицательные, поэтому их необходимо сначала перевести в обратный код, а затем в дополнительный (по правилам перевода обратного и дополнительного кодов):

[А]пр=1.01011 [А]обр=1.10100 [А]доп=1.10101

[В]пр=1.00100 [В]обр=1.11011 [В]доп=1.11100

Выполним сложение А и В.

Проверка: А = - 10112 = -1110, В = - 1002 = -410, в результате должно получиться С= -15, т.е. -11(10) + (-4)10 = -15(10). Для проверки результата сложения необходимо из дополнительного кода числа С перевести в прямой код числа С, так как в результате получилось отрицательное число, что подтверждает «1» в знаковом разряде.

Поэтому [С]доп =1.10001 [С]обр = 1.01110 [С]пр= 1.01111=-15(10)

Ответ: [С]доп =1.10001

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]