Наиболее распространенной системой представления целых чисел в современных компьютерах является представление в двоичном дополнительном коде (two's complement notation). В этой системе используется фиксированное число битов для представления числового значения.
В современном оборудовании используется кодировка, в которой каждому значению отводится 32 бита. Такой подход позволяет хранить большой диапазон чисел. Для наглядности рассмотрим этот подход на коротких системах представления.
На рисунке 1.9 изображены два представления в двоичном дополнительном коде: набор из трех битов и набор из четырех битов.
Такая таблица кодов строится, начиная с цепочки, состоящей из одних нулей, затем отсчитываются значения до цепочки, состоящей из нуля, за которым следуют единицы. Эти наборы битов являются представлениями значений 0, 1, 2, 3 и т. д. Последовательности, которые являются кодами отрицательных чисел, начинаются с цепочки битов, состоящей из одних единиц. Затем отсчитываются в обратном порядке до цепочки, содержащей единицу, за которой следуют нули. Эти наборы битов представляют числа -1, -2, -3 и т. д. Если трудно считать в обратном порядке в двоичной системе счисления, можно начать считать с конца таблицы, с цепочки, состоящей из единицы и нулей, и считать до цепочки, состоящей из единиц.
|
|
Надо обратить внимание на то, что в представлении в двоичном дополнительном коде крайний слева разряд обозначает знак числа. Поэтому его называют знаковым разрядом (sign bit). Знаковый разряд отрицательных чисел равен 1, а положительных чисел — 0.
Есть удобное соотношение между записью положительного и отрицательного чисел, одинаковых по модулю. Они совпадают, если их читать справа налево, до первой единицы включительно, а с этого места они являются дополнениями друг друга. Дополнением набора битов является набор битов, который получается путем замены всех нулей на единицы и наоборот, т.е. дополнении до N-1, где N — минимальное число, вызывающее перенос в следующий разряд при данном количестве разрядов (для 4-битового кода это 16). Это дополнение называют также инверсией. Например, 0010 и 1110 — дополнения друг друга.
Наборы из трех бит Наборы из четырех битов
Набор битов | Значение |
011 | 3 |
010 | 2 |
001 | 1 |
000 | 0 |
111 | -1 |
110 | -2 |
101 | -3 |
100 | -4 |
Набор битов | Значение |
0111 | 7 |
0110 | 6 |
0101 | 5 |
0100 | 4 |
0011 | 3 |
0010 | 2 |
0001 | 1 |
0000 | 0 |
1111 | -1 |
1110 | -2 |
1101 | -3 |
1100 | -4 |
1011 | -5 |
1010 | -6 |
1001 | -7 |
1000 | -8 |
Рис. 1.9. Таблицы кодов 3-х и 4-х битовых
Например, возьмем два числа в 4-битовом представлении 2 и -2. Они заканчиваются на 10, но запись числа 2 начинается с 00, а числа -2 — с 11. Это наблюдение может помочь найти алгоритм для получения записи отрицательного числа из записи положительного и наоборот, когда эти числа равны по модулю. Мы просто переписываем исходную последовательность справа налево до тех пор, пока не будет переписана единица, затем мы переписываем оставшиеся разряды, заменяя их дополнениями (т.е. заменяя нули на единицы, а единицы на нули). Обратите внимание, что самое маленькое отрицательное число в представлении в дополнительном коде не имеет положительного эквивалента.
|
|