Материал предоставлен http://it.rfet.ru

Перевод чисел между системами счисления 2 ↔ 8 ↔ 16

Интерес к двоичной системе счисления вызван тем, что именно эта система используется для представления чисел в компьютере. Однако двоичная запись оказывается громоздкой, поскольку содержит много цифр, и, кроме того, она плохо воспринимается и запоминается человеком из-за зрительной однородности (все число состоит из нулей и единиц). Поэтому в нумерации ячеек памяти компьютера, записи кодов команд, нумерации регистров и устройств и пр. используются системы счисления с основаниями 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.

Таблица 4.1. Представление чисел в системах счисления

10-ная2-ная 8-ричная16-ричная
0000
1111
21022
31133
410044
510155
611066
711177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

Существуют две важных теоремы, на основании которых выполняются преобразования. Мы примем их без доказательства и приведем несколько примеров.

Теорема 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}%%.

Представление чисел в различных системах счисленияКодирование чисел в компьютере и действия над ними