Перевод чисел из восьмеричной системы счисления в десятичную¶
Перевод из восьмеричной в десятичную систему счисления — это математическая операция приведения числа, записанного в позиционной восьмеричной системе счисления (ОСС, основание 8), к записи в десятичной системе счисления (ДСС, основание 10). Метод основан на разложении числа по степеням основания и суммировании слагаемых. Восьмеричная система исторически тесно связана с вычислительной техникой: она используется для краткой записи двоичных чисел, поскольку 8 = 2³, и применяется в UNIX-подобных операционных системах для прав доступа к файлам, а также в младших байтах машинных кодов процессоров Intel x86.
¶Основы позиционных систем счисления
В любой позиционной системе счисления цифра числа умножается на основание системы, возведённое в степень её разряда. Для восьмеричной системы это выражается формулой:
$$N_{10} = \sum_{i=0}^{n} a_i \cdot 8^i,$$
где $a_i$ — цифры восьмеричного числа (от 0 до 7), $i$ — номер разряда, начиная с нуля справа. Полученная сумма и есть значение числа в десятичной системе.
¶Метод разложения по степеням
Рассмотрим алгоритм перевода на примере числа 157₈:
- Записать цифры числа и определить их разряды: 1 — третий разряд, 5 — второй, 7 — нулевой.
- Умножить каждую цифру на 8 в соответствующей степени:
- 1 × 8² = 1 × 64 = 64
- 5 × 8¹ = 5 × 8 = 40
- 7 × 8⁰ = 7 × 1 = 7
- Просуммировать результаты: 64 + 40 + 7 = 111.
Следовательно, 157₈ = 111₁₀.
Другой пример — число 2046₈:
- 2 × 8³ = 2 × 512 = 1024
- 0 × 8² = 0
- 4 × 8¹ = 32
- 6 × 8⁰ = 6
Сумма: 1024 + 0 + 32 + 6 = 1062. Таким образом, 2046₈ = 1062₁₀.
¶Метод «на столбик» (последовательное умножение)
Более быстрый вычислительный способ, не требующий возведения в степень на каждом шаге. Алгоритм:
- Начать со старшей (левой) цифры восьмеричного числа.
- Умножить её на 8 и прибавить следующую цифру.
- Повторять шаг 2, пока не будут обработаны все цифры.
Пример для числа 157₈:
- Начальное значение: 1
- 1 × 8 + 5 = 13
- 13 × 8 + 7 = 111
Результат тот же: 111₁₀. Метод удобен для ручного счёта и легко реализуется в программном коде.
¶Перевод дробных восьмеричных чисел
Если восьмеричное число содержит дробную часть, записанную после восьмеричной точки, каждая цифра после точки умножается на 8 в отрицательной степени:
$$N_{10} = \sum_{i=-1}^{m} a_i \cdot 8^i.$$
Пример: перевести 0.3₈ в десятичную запись.
- 3 × 8⁻¹ = 3 × 1/8 = 0.375.
Следовательно, 0.3₈ = 0.375₁₀.
Для числа 0.14₈:
- 1 × 8⁻¹ = 0.125
- 4 × 8⁻² = 4 × 1/64 = 0.0625
Сумма: 0.125 + 0.0625 = 0.1875. То есть 0.14₈ = 0.1875₁₀.
¶Обратная задача: перевод из десятичной в восьмеричную
Для целых чисел используется метод последовательного деления на 8 с записью остатков. Остатки записываются справа налево, от младшего разряда к старшему.
Пример: перевести 111₁₀ в восьмеричную систему.
- 111 ÷ 8 = 13, остаток 7
- 13 ÷ 8 = 1, остаток 5
- 1 ÷ 8 = 0, остаток 1
Читаем остатки снизу вверх: 157₈.
Для дробной части число последовательно умножается на 8, целые части произведений записываются слева направо до появления требуемой точности или зацикливания.
¶Таблица соответствий первых чисел
| Десятичное | Восьмеричное |
|---|---|
| 1 | 1 |
| 7 | 7 |
| 8 | 10 |
| 10 | 12 |
| 16 | 20 |
| 64 | 100 |
| 100 | 144 |
| 512 | 1000 |
| 1000 | 1750 |
¶Практическое применение
Восьмеричная система используется в UNIX-подобных системах для задания прав доступа к файлам: например, chmod 755 означает, что владелец файла получает права на чтение, запись и исполнение (7 = 4 + 2 + 1), а остальные пользователи — на чтение и исполнение (5 = 4 + 1). Перевод таких прав в десятичную запись выполняется стандартным разложением по степеням.
В программировании восьмеричные константы записываются с ведущим нулём (например, 0755 в языке C) или с префиксом (0o755 в Python, &O755 в Visual Basic). При отладке машинных кодов восьмеричная запись применяется для компактного представления двоичных байтов: один байт (8 бит) записывается ровно тремя восьмеричными цифрами.
¶Историческая справка
Восьмеричная система счисления получила распространение в XX веке вместе с развитием электронно-вычислительной техники. Система счисления на восьми пальцах приписывается ряду доисторических народов, однако документальных подтверждений этому нет. В русской традиции счёт «восьмёрками» был распространён в торговле (восьмёрка — мера количества товара), что отразилось в понятии «полувосьмёрка» и подобных.
¶Исторические источники и справочная литература
- Вичер С. П. «Основы информатики»
- Пасько В. А., Пасько Г. В. «Информатика. Курс лекций»
- Бродский Б. Н. «Дискретная математика»
- Клайн М. «Математика. Поиск истины»
- ГОСТ 27322-87 «Системы счисления позиционные. Общие требования»
