
- •Информационные преобразования числовых форматов
- •Позиционные системы счисления
- •Преобразования целых чисел в двоичной и десятичной системах счисления
- •Коды двоичных целых чисел
- •1. Знаковый прямой код целого числа.
- •2. Обратный код целого числа.
- •3. Дополнительный код целого числа.
- •Битовое отображение целого числа
- •Преобразования вещественных чисел в двоичной и десятичной системах счисления
- •Нормальная форма вещественного числа
- •Преобразование вещественного числа в целое число
- •Преобразование целого числа в вещественное число
- •Фиксированный вещественный формат
- •Символьные преобразования числовой информации
- •Список литературы
- •Оглавление
2. Обратный код целого числа.
В дополненной аксиоматике арифметики отрицательные числа симметричны положительным числам относительно начального числа 0. Из этого следует, что сумма положительного и отрицательного числа равна 0, например 1 + (-1) = 5 + (-5) = 0 и т.п. В двоичном представлении числа 510, должно наблюдаться то же самое:
0
+
x2
(6)
000000002
Переменная x2 обозначает отрицательное число. Если присмотреться к расположению нулей и единиц в примере (6), то значение x2 можно представить так, чтобы в ответе получались только единицы. Такое представление называется обратным кодом. Для этого необходимо 0 заменить на 1, а 1 заменить на 0:
0
+
111110102
(7)
111111112
В примере (7) отрицательное число –510 представлено двоичным числом в обратном коде 111110102.
Чтобы в результате сложения положительного числа и его отрицательного числа в обратном коде получался 0, необходимо добавить 1 к результату сложения и учесть конечную позиционную размерность числа. Для байта – это 8 бит. Например,
0
+
111110102
1
+
12
(8)
1000000002
000000002
Итак, в обратном коде положительное число представлено обычным образом. Отрицательное число получается из положительного числа путем замены 0 на 1 и 1 на 0. Число 0 является положительным.
Если 8 бит рассматривать как код целого числа независимо от знака, то числа [00000000 ; 01111111]2 ~ [0 ; 127]10 составляют диапазон положительных чисел, а числа [10000000 ; 11111110]2 ~ [-128; -1]10 составляют диапазон отрицательных чисел. В этом смысле диапазон [0; 11111111]2 не соблюдает аксиоматику арифметики для отрицательных и положительных чисел. Для таких чисел процессор компьютера должен иметь специальные инструкции для корректного выполнения действий арифметики.
Если в результате сложения двух чисел в обратном коде получается число 1 в бите 8, т.е. слева от байта, то необходимо прибавить 1 к полученному результату. Например, –126 + 5 = -121:
01111110
126
1
+
00000101
5
10000110
-121
01111001 121
Противоположный пример, -5 + 126:
00000101
5
1
+
01111110
126
1
01111000
0
+
1
01111001 121
3. Дополнительный код целого числа.
Дополнительный код целого числа продолжает идеи обратного кода. Положительные числа остаются без изменения. Отрицательные числа формируются по следующему алгоритму:
-
получить отрицательное число из положительного числа заменой 0 на 1 и 1 на 0;
-
к полученному обратному коду прибавить 1.
В качестве примера покажем в одном байте обратный код числа –610 ~ 111110102 :
00000110
6
1
+
1
11111010 -6 дополнительный код
Сложение в дополнительном коде производится обычным образом. По сравнению со сложением в обратном коде здесь отсутствует прибавление 1 к промежуточному результату сложения. Следовательно, в дополнительном коде сложение выполняется чуть быстрее, чем в обратном коде.
Проверим корректность сложения в
дополнительном коде. Сначала покажем,
что, на пример,
:
1
+
00000110
6
1
00000000
00000000 0
Второй пример нацелен на отрицательное
значение
:
1
+
00000101
5
11111111 -1
Действительно, в дополнительном коде -110 = 111111112 :
00000001
1
1
+
1
11111111 -1 дополнительный код
Третий пример показывает положительный
результат сложения, на пример,
:
1
+
00001001
9
1
00000011
00000011 3
Недостаток дополнительного кода заключается в том, что необходимо вычитать 1 для извлечения модуля числа, например
1
-
00000001
1
11111001
обратный код числа
00000110 6 модуль числа
По вычислительным меркам такие действия выполняются не часто, на пример, для отображения числа на мониторе.