При наладке аппаратных средств ЭВМ или создании новой программы возникает необходимость "заглянуть внутрь" памяти машины, чтобы оценить ее текущее состояние. Но там все заполнено длинными последовательностями нулей и единиц двоичных чисел. Эти последовательности очень неудобны для восприятия человеком, привыкшим к более короткой записи десятичных чисел. Кроме того, естественные возможности человеческого мышления не позволяют оценить быстро и точно величину числа, представленного, например, комбинацией из 16 нулей и единиц.
Для облегчения восприятия двоичного числа решили разбивать его на группы разрядов, например, по три или четыре разряда. Эта идея оказалась очень удачной, так как последовательность из трех бит имеет 8 комбинаций, а последовательность из 4 бит - 16. Числа 8 и 16 являются степенями двойки, поэтому легко находить соответствие с двоичными числами. Развивая эту идею, пришли к выводу, что группы разрядов можно закодировать, сократив при этом длину последовательности знаков. Для кодировки трех битов требуется восемь цифр, поэтому взяли цифры от 0 до 7 десятичной системы. Для кодировки же четырех битов необходимо шестнадцать знаков; для этого взяли 10 цифр десятичной системы и 6 букв латинского алфавита: A, B, C, D, E, F. Полученные системы, имеющие основания 8 и 16, назвали соответственно восьмеричной и шестнадцатеричной.
В восьмеричной (octal) системе счисления используются восемь различных цифр: 0, 1, 2, 3, 4, 5, 6, 7. Основание системы - 8. При записи отрицательных чисел перед последовательностью цифр ставят знак минус. Сложение, вычитание, умножение и деление чисел, представленных в восьмеричной системе, выполняются весьма просто, подобно тому, как это делают в общеизвестной десятичной системе счисления.
Пример выполнения операции сложения в восьмеричной системе счисления:
1 1 Красным цветом показан перенос из младших разрядов в старшие.
4 7 6 Выполнение операции в каждом разряде:
+ 3 4 1) 6 + 4 = 10 = 1*8 + 2 = 128
5 3 2 2) 1 + 7 + 3 = 1*8 + 3 = 138
3) 1 + 4 = 5
Проверим результат путем перевода чисел в десятичную систему счисления:
4768 = 4*82 + 7*8 + 6 = 318 318
348 = 3*8 + 4 = 28 +28
532 = 5*82 + 3*8 + 2 = 346 346
Пример выполнения операции вычитания в восьмеричной системе счисления:
7 8 Красным цветом показан перенос из старших разрядов в младшие.
5 3 2 Выполнение операции в каждом разряде:
- 3 4 1) 8 + 2 – 4 = 6
4 7 6 2) 7 + 2 - 3 = 1 *8 + 3 = 138
3) 1 + 4 = 5
Пример выполнения операции умножения в восьмеричной системе счисления:
5 4 54 4*4 = 16 = 2 *8 + 0 = 208 (записываем 0)
* 3 4 * 4 2+ 5*4 = 22 = 2 *8 + 6 = 268
2 6 0 260
+ 2 0 4
2 3 2 0 54 4*3 = 12 = 1 *8 + 4 = 148 (записываем 4)
* 3 1 + 5*3 = 16 = 2 *8 + 0 = 208
Выполним проверку:
548 = 5*8 + 4 = 4410 44
348 = 3*8 + 4 = 2810 * 28
23208 = 2*83 + 3*82 + 2*8 = 123210 352
+ 88 = 123210
Пример выполнения операции деления в восьмеричной системе счисления:
2 3 2 08 5 48
- 2 0 4 3 48
2 6 0
- 2 6 0
Деление в восьмеричной системе близко делению в десятичной системе: нужно подобрать цифры частного. 232 делим на 54, в десятичной системе мы получили бы целое частное 4, но из предидущего примера мы знаем, что в восьмеричной системе 54*4 = 260, это много, попробуем взять цифру поменьше – 3, умножаем 54*3 = 204, эта цифра подходит, и т.д.
В различных языках программирования запись восьмеричных чисел начинается с 0, например, запись 011 означает десятичное число 9.