Планета Информатики

Восьмеричная система счисления

При описании двоичной системы счисления было упомянуто, почему современное "железо" понимает только двоичную систему. Однако человеку трудно воспринимать длинные записи нулей и единиц, а переводить числа из двоичной в десятичную систему и обратно трудоемко.

Поэтому в программировании иногда используют другие системы счисления – восьмеричную и шестнадцатеричную. Поскольку 8 и 16 являются степенями двойки,

8 = 23, 16 = 24

преобразование двоичного числа в эти системы, также как обратная операция, выполняются просто.

В восьмеричной системе счисления используется восемь знаков-цифр (от 0 до 7). Каждой цифре соответствует число из трех цифр в двоичной системе счисления:

000 – 0
001 – 1
010 – 2
011 – 3
100 – 4
101 – 5
110 – 6
111 – 7

Для преобразования двоичного числа в восьмеричное надо разбить его на тройки цифр и заменить каждую тройку соответствующей ей одной цифрой из восьмеричной системы счисления. Разбивать двоичное число на тройки следует с конца, а вместо недостающих цифр в начале можно записать нули.

1011101 = 1 011 101 = 001 011 101 = 1 3 5 = 135

В примере число 1011101 в двоичной системе приводится к числу 135 в восьмеричной системе счисления.

10111012 = 1358

Обратный перевод, когда восьмеричное число переводится в двоичное, выполняется аналогично. Только здесь на место восьмеричных цифр подставляются двоичные числа, состоящие из трех цифр.

135 = 001 011 101

Как перевести восьмеричное число в десятичное? Здесь действует тот же алгоритм, как при преобразовании двоичного числа в десятичное. Вспомним его:

11012 = 1 * 23 + 1 * 22 + 0 * 21 + 1 * 20 = 8 + 4 + 0 + 1 = 1310

Однако в случае восьмеричного числа за основание степени берется десятичное число 8:

1358 = 1 * 82 + 3 * 81 + 5 * 80 = 64 + 24 + 5 = 9310

Преобразование десятичного числа в восьмеричное также похоже на перевод в двоичное, за исключением того, что делить надо на 8:

93 / 8 = 11, остаток 5
11 / 8 =  1, остаток 3
 1 / 8 =  0, остаток 1

Собираем остатки с конца и получаем число 135 в восьмеричной системе счисления.