Интерес к двоичной системе счисления вызван тем, что именно эта система используется для представления чисел в компьютере. Однако двоичная запись оказывается громоздкой, поскольку содержит много цифр, и, кроме того, она плохо воспринимается и запоминается человеком из-за зрительной однородности (все число состоит из нулей и единиц). Поэтому в нумерации ячеек памяти компьютера, записи кодов команд, нумерации регистров и устройств и пр. используются системы счисления с основаниями 8 и 16; выбор именно этих систем счисления обусловлен тем, что переход от них к двоичной системе и обратно осуществляется, как будет показано ниже, весьма простым образом.
Двоичная система счисления имеет основанием 2 и, соответственно, 2 цифры: 0 и 1.
Восьмеричная система счисления имеет основание 8 и цифры 0, 1.....7.
Шестнадцатеричная система счисления имеет основание 16 и цифры 0, 1, ..., 9, А, В, С, D, Е, F.
При этом знак «А» является 16-ричной цифрой, соответствующей числу 10 в десятичной системе; %%В_{16} = 11_{10}; С_{16} = 12_0; D_{16} = 13_{10}; Е_{16} = 14_{10}; F_{16} = 15_{10}%%. Другими словами, в данном случае А ... F
- это не буквы латинского алфавита, а цифры 16-ричной системы счисления и поэтому они имеют только такое начертание (не могут быть представлены в виде, например, соответствующих строчных букв, как в текстах).
Пользуясь алгоритмами, сформулированными в предыдущем разделе, можно заполнить табл. 4.1.
10-ная | 2-ная | 8-ричная | 16-ричная |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 | 4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 | 10 | 8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
Существуют две важных теоремы, на основании которых выполняются преобразования. Мы примем их без доказательства и приведем несколько примеров.
Теорема 1. Для преобразования целого числа %%Z_p → Z_q%% в том случае, если системы счисления связаны соотношением %%q = р^r%%, где %%r%% - целое число большее 1, достаточно %%Z_p%% разбить справа налево на группы по %%r%% цифр и каждую из них независимо перевести в систему %%q%%.
Пример. Выполнить преобразование %%Z_2 = 110001_2 → Z_8%%. Исходное число разбивается на группы по три разряда справа налево (8 = 23, следовательно, %%r = 3%%) и каждая тройка в соответствии с таблицей 4.1. переводится в 8-ричную систему счисления независимо от остальных троек:
Следовательно, %%110001_2 = 61_8%%. Аналогично, разбивая %%Z_2%% на группы по 4 двоичные цифры и дополняя старшую группу незначащими нулями слева, получим %%110001_2= 31_{16}%%.
Теорема 2. Для преобразования целого числа %%Z_p → Z_q%% в том случае, если системы счисления связаны соотношением %%р = q^r%%, где %%r%% - целое число большее 1, достаточно каждую цифру %%Z_p%% заменить соответствующим %%r%%-разрядным числом в системе счисления q, дополняя его при необходимости незначащими нулями слева до группы в r цифр.
Пример. Выполнить преобразование %%D3_{16} → Z_2%%.
Переходы %%Z_8 → Z_{16}%% и %%Z_{16} → Z_8%%, очевидно, удобнее осуществлять через промежуточный переход к двоичной системе. Например,
%%123_8 = 001010011_2 = 53_{16}%%.
Представление чисел в различных системах счисления | Кодирование чисел в компьютере и действия над ними |