Восьмеричная система счисления. Перевод чисел, практическое применение

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

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

Поэтому в программировании иногда используют другие системы счисления – восьмеричную и шестнадцатеричную. Поскольку 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 в восьмеричной системе счисления.