- •Федеральное агентство по образованию рф
- •Содержание
- •Глава 1. Основы теории информации 10
- •Глава 2. Основы аналоговых и цифровых вычислений 50
- •Предисловие
- •Введение Основные понятия
- •Вопросы для самоконтроля
- •Глава 1. Основы теории информации
- •Получение информации
- •Сигналы детерминированные и случайные.
- •1.3 Сигналы непрерывные и дискретные. Преобразование сигналов.
- •1.4 Модуляция и демодуляция сигналов.
- •1.5 Передача информации. Меры информации.
- •Вопросы для самопроверки
- •Тестовые задания
- •Глава 2. Основы аналоговых и цифровых вычислений
- •2.1. Принципы построения вычислительных машин
- •2.2.Арифметические основы цвм. Системы счисления
- •2.3.Двоичная система счисления.
- •2.4. Перевод чисел из одной системы счисления в другую.
- •Пример. Перевести двоичное число 1110101111,01101112 в шестнадцатеричную систему счисления
- •2.5. Формы представления числовой информации
- •2.6. Прямой, обратный и дополнительный коды и их использование при выполнении арифметических операций
- •Пример. Число: -1
- •Пример. Число –127
- •2.7. Основы алгебры логики.
- •Основные формулы, используемые при упрощении логических функций
- •Составим таблицу работы сумматора в соответствии с двоичной таблицей сложения
- •Вопросы для самоконтроля
- •Тестовые задания
- •Итоговые тестовые задания
- •Ответы на тесты по главам
- •Список рекомендуемой литературы
- •Основы информатики и вычислительной техники
2.6. Прямой, обратный и дополнительный коды и их использование при выполнении арифметических операций
В большинстве компьютеров с целью упрощения конструкции АЛУ операция вычитания не используется. Она заменяется операцией сложения путем замены знака вычитаемого на противоположный и прибавления его к уменьшаемому:
![]()
В связи с этим для машинного изображения отрицательных чисел используют прямой, дополнительный и обратный коды.
Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково – двоичными кодами с цифрой 0 в знаковом разряде (см., например, рис. 2.8в).
Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение. Рассмотрим эти коды и их применение на примере отрицательных чисел, представленных в форме с фиксированной запятой.
Прямой код числа получается, если в знаковый разряд поместить цифру 1, а в разряды числовой части числа - двоичный код его абсолютной величины.
Обратный код получается инвертированием (заменой на обратные значения) всех цифр двоичного кода абсолютной величины числа, включая разряд знака: нули заменяются единицами, а единицы – нулями.
Пример. Число: -1
Код модуля числа (в однобайтовом формате) 0,0000001
Обратный код 1,1111110
Представление числа в разрядной сетке показано на рис. 2.10
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
Рис. 2.10.
Пример. Число –127
Код модуля числа 0,1111111
Обратный код числа 1,0000000. Представление числа в обратном коде показано на рис. 2.11
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
Рис. 2.11
Дополнительный код получается образованием обратного кода с последующим прибавлением единицы к его младшему разряду.
Пример. Представление числа –1 в дополнительном коде показано на рис. 2.12
|
1 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
Рис. 2.12
Представление числа –127 в дополнительном коде показано на рис. 2.13
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Рис. 2.13
Обычно отрицательные десятичные числа при вводе в машину автоматически преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся и участвуют в операциях. При выводе таких чисел из машины происходит обратное преобразование в отрицательные десятичные числа.
Использование различных способов изображения отрицательных чисел в ЦВМ обуславливает целый ряд особенностей выполнения операции алгебраического сложения двоичных чисел.
При сложении обратных кодов чисел Х1и Х2имеют место четыре основных и два особых случая.
Х1>0 иX2>0. При суммировании складываются все разряды, включая разряд знака.
Пример
Десятичная запись Двоичные коды
|
0 |
0000101 |
|
+ |
|
|
0 |
0001001 |
|
0 |
0001110 |
+
(9)
(14)
Х1>0,X2<0 и |X2|>X1
Пример
Десятичная запись Двоичные коды
|
0 |
0000011 |
|
+ |
|
|
1 |
1110101 |
|
1 |
1111000 |
+
Обратный код
числа -1010
Обратный код
суммы
При переводе обратного кода (обр) в прямой (пр) получим:
1111000обр=1 0000111пр= -710
Х1>0,X2<0 и |X2|<X1
Пример
Десятичная запись Двоичные коды
|
0 |
0001010 |
|
+ |
|
|
1 |
1111100 |
|
0 |
0000110 |
|
|
+1 |
|
0 |
0000111 |
+
Обратный код
числа -310
7
Полученный непосредственно сразу неверный результат (число 6) исправляется путем переноса единицы из знакового разряда в младший разряд суммы. При этом получается правильный результат – число 710
Х1<0 иX2<0
Пример.
Десятичная запись Двоичные коды
|
1 |
1111100 |
|
+ |
|
|
1 |
1111000 |
|
1 |
1110100 |
|
|
+1 |
|
1 |
1110101 |
Обратный код числа -310
-3+
Обратный код
числа -710
-10
Обратный код
числа -1010
Полученный непосредственно сразу
неверный результат (обратный код числа
–1110) исправляется путем переноса
единицы из знакового разряда в младший
разряд суммы.![]()
При выполнении операции может появиться число, старшие разряды которого не помещаются в отведенной для него области памяти – возникает переполнение разрядной сетки формата числа. Рассмотрим два возможных случая переполнения.
Х1>0 , X2>0 и S=X1+X2
2n-1,
гдеn– количество
разрядов формата числа (для однобайтового
форматаn=8, 2n-1=27=128)
Пример
Десятичная запись Двоичные коды
|
0 |
1000001 |
|
+ |
|
|
0 |
1100001 |
|
1 |
0100010 |
+
97
Переполнение
Здесь имеет место переполнение разрядной сетки: семи разрядов цифровой части недостаточно для размещения восьмиразрядной суммы (16210=101000102), поэтому старший разряд суммы оказывается в знаковом разряде и знак суммы оказывается несовпадающим со знаком слагаемых, что является признаком переполнения разрядной сетки.
Х1<0,X2<0 иS=|X1|+|X2|
2n-1
Пример
Десятичная запись Двоичные коды
|
1 |
1000000 |
|
+ |
|
|
1 |
0100000 |
|
0 |
1100000 |
|
|
+1 |
Обратный код числа -6310
-63+
Обратный код
числа -9510
-158
Переполнение
Здесь также знак суммы не совпадает со знаками слагаемых, что является признаком переполнения разрядной сетки.
При сложении дополнительных кодов чисел Х1и Х2имеют место те же четыре основных и два особых случая.
1. Х1>0 иX2>0. Аналогично случаю 1 для обратных кодов.
2. Х1>0,X2<0 и |X2|>X1.
Пример.
Десятичная запись Двоичные коды
|
0 |
0000011 |
|
+ |
|
|
1 |
1110110 |
|
1 |
1111001 |
-
Дополнительный
код числа -1010
Дополнительный
код числа -710
При переводе дополнительного (доп) кода в прямой (пр) получим:
![]()
3. Х1>0,X2<0 и |X2|<Х1
Пример
Десятичная запись Двоичные коды
|
0 |
0001010 |
|
+ |
|
|
1 |
1111101 |
|
0 |
0000111 |
|
|
|
-
Дополнительный
код числа -310
перенос
отбрасывается
Единица переноса из знакового разряда отбрасывается.
Х1<0,X2<0
Пример
Дополнительный
код числа -310
|
1 |
1111101 |
|
+ |
|
|
1 |
1111001 |
|
1 |
1110110 |
|
|
|
+
Дополнительный
код числа -710
Дополнительный
код числа -1010
перенос
отбрасывается
Случаи переполнения разрядной сетки аналогичны случаям переполнения для обратных кодов.
Сравнение использования обратного и дополнительного кодов показывает, что преобразование отрицательного числа в обратный код занимает меньше времени, однако время выполнения сложения в дополнительных кодах меньше, чем в обратных, так как в этом случае отсутствует необходимость переноса единицы из знакового разряда в младший разряд результата.





