Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

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

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

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Прямой, обратный и дополнительный коды.




 

1) Положительные числа.

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

Прямой код Xпр двоичного числа X содержит двоичные цифровые разряды, слева записывается знак числа.

Пример.

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

9710=11000012.

               

Это же число разместим в разрядной сетке из 16 разрядов.

                               

 

2) Отрицательные числа.

Отрицательные числа хранятся в памяти ЭВМ либо в обратном, либо в дополнительном кодах.

Обратный код Xобр двоичного отрицательного числа X получается следующим образом: в знаковый разряд числа записывается единица, в цифровых разрядах нули заменяются единицами, а единицы — нулями.

Запишем число -4 в обратном коде в 8-ми разрядной сетке. Двоичный код модуля исходного числа равен 1002. Обратный код получается инверсией каждого разряда двоичного кода модуля исходного числа, записанного в 8-ми разрядную сетку.

Двоичный код модуля исходного числа равен 00000100. Выполним инверсию каждого разряда.

Обратный код числа -4 записывается следующим образом:

 

               

Знаковый разряд

 

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

Итак, Xдоп=Xобр + 00000001, т.е.

1              
(знак.разряд)              
               

 

(сложение производим в двоичной системе счисления 12+12=102)

 

1 1 1 1 1 1 0 0

2726252423222120

Теперь приведем полученное число в десятичную систему счисления

128+64+32+16+8+4=252

Мы получили, что дополнительный код числа –4 в десятичной системе счисления равен 252. Сложим ê-4ê+252=256. 256=28. Количество разрядов сетки было равно 8. Число 252 «дополнило» число ç–4ç до 28 = 1000000010.

Теперь сложим два двоичных числа – двоичный код числа ç-4ç в 8-разрядной сетке и дополнительный код числа –4:

 

11111100

1 000000002 мы получили 28

 

Запишем общее правило получения дополнительного кода некоторого целого числа х.

 

x, x>=0

Xдоп =

2k - |x|, x<0, где k – количество разрядов сетки.

 

Есть еще одно очень простое правило получения дополнительного кода некоторого отрицательного числа.

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

 

00000 100 прямой код ç-4ç

11111 100

инверсия разрядов

 

Исходя из вышеизложенного, можно определить, что самое маленькое отрицательное число, которое можно записать в 8-ми разрядной сетке — -128, а в 16-ти разрядной сетке — -32768.

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

а) Вычислить х-у, где х=+6,у=-3, при этом результат является положительным числом.

Х-у=6+(-3)

хпробрдоп=0.110; уобр=1.100; удоп=1.101

 

Сложение в обратных кодах:

хпр=0.110

+

уобр=1.100

10.010

+

_____ 1

0.011

В данном случае единица, не поместившаяся в разрядную сетку (единица переноса из знакового разряда), циклически прибавляется к правому разряду суммы кодов. Ответом является положительное двоичное число 0.0112=310.

Сложение в дополнительных кодах:

Хпр=0.100

+

удоп=1.101

10.011

¿

__________

0.011

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

б) Рассмотрим второй случай: числа имеют разные знаки, но в результате получаем отрицательное число.

х=-610=-1102 и у=+310=+0112.

Хобр=1.001, хдоп=1.010, упробрдоп=0.011.

 

Сложение в обратных кодах:

хобр=1.001

+

упр= 0.011

1.100

В данном случае получен обратный код алгебраической суммы, необходимо перейти от обратного кода к прямому:

(х+у)обр=1.100, следовательно, (х+у)пр=-0112=-310(единица в знаковом разряде дает минус, все остальные разряды инвертируются).

 

Сложение в дополнительных кодах:

Хдоп=1.010

+

упр=0.011

1.101

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

(1.101)доп ® (1.100)обр ® -0112=-310.

 

в) Третий случай: оба числа отрицательные.

Х=-6=-1102, у=-3=-0112.

Хобр=1.001, хдоп=1.010,

Уобр=1.100, удоп=1.101.

Рассмотрим алгебраическое сложение в дополнительных кодах:

1.010

+

1.101

10.111

В данном случае имеет место так называемое отрицательное переполнение, так как возник перенос только из знакового разряда суммы. Следовательно, результат получился отрицательный и превышающий предельно допустимое значение для данной разрядной сетки. Сдвинем полученный результат на 1 разряд вправо, тогда(х+у)доп=(1.0111)доп. Перейдем от дополнительного кода к прямому:

(1.0111)доп ® (1.0110)обр ® (1.1001)пр=-910.

Следует отметить, что в процессе выполнения расчетов на ЭВМ может образоваться как «положительный», так и «отрицательный» ноль, причем только в дополнительном коде он имеет единственное представление. Действительно,

(+0)пр=0.00…00; (-0)пр=1.00…00,

в обратном коде

(+0)обр=0.00…00; (-0)обр=1.11…11,

в дополнительном коде

(+0)доп=0.00…00; (-0)доп=0.00…00.

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

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

И последнее очень существенное замечание:

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

Пример. Пусть дана 4-х разрядная сетка со знаком, в которой должен разместиться результат от суммирования двух положительных чисел х=5 и у=7.

хпр=0.101, упр=0.111

0.101

+

0.111

1.100

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

(1.100)доп ® (1.011)обр ® -1002=-410.

Посмотрим, что получится, если под результат отвести шесть разрядов:

 

0.00101

+

0.00111

0.01100

(х+у)пр=(0.01100)пр=+12.

Сумма двух чисел вычислена верно.

Выполнить самостоятельно:

1. Найти дополнительные коды для чисел:-45, 123, -98, -А516, -111, -778. Формат представления данных один байт со знаком.

2. Найти дополнительные коды для чисел: -11100018, 234, -456, -АС0916, -32324, СС7816, -110012,. Формат представления данных два байта со знаком.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных