|
На протяжении всей истории цифровых компьютеров для представления отрицательных чисел использовались 4 различные системы. Первая из них называется системой со знаком. В такой системе крайний левый бит - это знаковый бит
(О - плюс, 1 - минус), а оставшиеся биты показывают абсолютное значение числа.
Во второй системе, которая называется дополнением до единицы, тоже присутствует знаковый бит (0 - плюс, 1 - минус). Чтобы сделать число отрицательным, нужно заменить каждую единицу нулем и каждый ноль единицей. Это относится и к знаковому биту. Система дополнения до единицы уже устарела.
Третья система, дополнение до двух, содержит знаковый бит (0 - плюс, 1 - минус). Отрицание числа происходит в два этапа. Сначала каждая единица меняется на ноль, а каждый ноль - на единицу (как и в системе дополнения до единицы). Затем к полученному результату прибавляется единица. Двоичное сложение происходит точно так же, как и десятичное, только перенос совершается в том случае, если сумма больше 1, а не больше 9. Например, рассмотрим преобразование числа 6 в форму с дополнением до двух:
♦ Число +6:
00000110
♦ Число -6 в системе с дополнением до единицы:
11111001
♦ Число -6 в системе с дополнением до двух:
11111010
Если нужно совершить перенос из крайнего левого бита, он просто отбрасывается.
В четвертой системе, которая для га-разрядных чисел называется системой со смещением на 2т_1, число представляется как сумма этого числа и 2т_1. Например, для 8-разрядного числа (т = 8) - это система со смещением на 128, в ней число сохраняется в виде суммы исходного числа и 128. Следовательно, -3 превращается в -3 + 128 = 125, и это число (-3) представляется 8-разрядным двоичным числом 125 (01111101). Числа от -128 до +127 выражаются числами от 0 до 255 (все их можно записать в виде 8-разрядного положительного числа). Отметим, что эта система соответствует системе с дополнением до двух с обращенным знаковым битом. В табл. А.2 представлены примеры отрицательных чисел во всех четырех системах.
В системах со знаком и с дополнением до единицы есть два представления нуля: +0 и -0. Такая ситуация нежелательна. В системе с дополнением до двух такой проблемы нет, поскольку здесь плюс ноль - это всегда плюс ноль. Но зато в этой системе есть другая особенность. Набор битов, состоящий из единицы, за которой следуют все нули, является дополнением самого себя. В результате ряд положительных и отрицательных чисел несимметричен - существует одно отрицательное число без соответствующего ему положительного.
Мы считаем это проблемами, поскольку хотим иметь систему кодировки, в которой:
♦ существует только одно представление нуля;
♦ количество положительных чисел равно количеству отрицательных.
Таблица А.2. Отрицательные 8-разрядные числа в четырех различных системах
|
N десятичное
|
N двоичное
|
-ы в системе со знаком
|
-ы дополнение до единицы
|
-ы дополнение до двух
|
-N смещение на 128
|
|
|
00000001
|
10000001
|
11111110
|
11111111
|
011111111
|
|
|
00000010
|
10000010
|
11111101
|
11111110
|
01111110
|
|
|
00000011
|
10000011
|
11111100
|
11111101
|
01111101
|
|
|
00000100
|
10000100
|
11111011
|
11111100
|
01111100
|
|
|
00000101
|
10000101
|
11111010
|
11111011
|
01111011
|
|
|
00000110
|
10000110
|
11111001
|
11111010
|
01111010
|
|
|
00000111
|
10000111
|
11111000
|
11111001
|
01111001
|
|
|
00001000
|
10001000
|
11110111
|
11111000
|
01111000
|
|
|
00001001
|
10001001
|
11110110
|
11110111
|
01110111
|
|
|
00001010
|
10001010
|
11110101
|
11110110
|
01110110
|
|
|
00010100
|
10010100
|
11101011
|
11101100
|
01101100
|
|
|
00011110
|
10011110
|
11100001
|
11100010
|
01100010
|
|
|
10101000
|
10101000
|
11010111
|
11011000
|
01011000
|
|
|
00110010
|
10110010
|
11001101
|
11001110
|
01001110
|
|
|
00111100
|
10111100
|
11000011
|
11000100
|
01000100
|
|
|
01000110
|
11000110
|
10111001
|
10111010
|
00111010
|
|
|
01010000
|
11010000
|
10101111
|
10110000
|
00110000
|
|
|
01011010
|
11011010
|
10100101
|
10100110
|
00100110
|
|
|
01100100
|
11100100
|
10011011
|
10011100
|
00011100
|
|
|
01111111
|
11111111
|
10000000
|
10000001
|
00000001
|
|
|
Не существует
|
Не существует
|
Не существует
|
10000000
|
00000000
|
Дело в том, что любой ряд чисел с равным количеством положительных и отрицательных чисел и только одним нулем содержит нечетное число членов, тогда как т бит предполагают четное число битовых комбинаций. В любом случае либо одна битовая комбинация окажется лишней, либо одной комбинации будет недоставать. Лишнюю битовую комбинацию можно использовать для обозначения числа -0, для большого отрицательного числа или для чего-нибудь еще, но она всегда будет создавать неудобства.
⇐Преобразование чисел из одной системы счисления в другую || Оглавление || Двоичная арифметика⇒
|