Переписывание Одного и Того Же Значения в Двоичной, Восьмеричной, Десятичной и Шестнадцатеричной Системах
Основание системы счисления («радикс») — это сколько различных цифр использует система счисления, прежде чем перейти на следующий разряд — десятичная использует 10 (0–9), двоичная использует 2 (0–1), восьмеричная использует 8 (0–7), а шестнадцатеричная использует 16 (0–9, затем A–F). Введите целое число в любой из этих четырёх систем счисления, и этот калькулятор покажет то же значение, записанное сразу во всех четырёх.
Двоичная система — это то, как компьютеры представляют каждое значение внутренне (каждая цифра — один «бит»); шестнадцатеричная — распространённое сокращение для двоичной в программировании (каждая шестнадцатеричная цифра заменяет ровно 4 двоичные цифры, поэтому её гораздо компактнее читать и вводить); восьмеричная встречается в старых правах доступа к файлам Unix и некоторых низкоуровневых контекстах. Десятичная — это просто повседневная система с основанием 10.
Формула
Каждая позиционная система счисления работает одинаково: каждая цифра умножается на основание, возведённое в степень её разрядного значения, затем суммируется:
где — цифра в позиции (считая от 0 с крайней правой цифры). Преобразование в другую систему счисления повторно делит десятичное значение на новое основание, записывая каждый остаток — обратная операция от суммы выше.
Пример Расчёта
Преобразование двоичного 11111111 в остальные три системы счисления:
- Читая справа налево, каждая
1вносит своё разрядное значение: . - Десятичная: 255.
- Восьмеричная: повторное деление 255 на 8 (255 ÷ 8 = 31 ост. 7, 31 ÷ 8 = 3 ост. 7, 3 ÷ 8 = 0 ост. 3) читает остатки снизу вверх как 377.
- Шестнадцатеричная: 255 ÷ 16 = 15 ост. 15, 15 ÷ 16 = 0 ост. 15 — оба остатка равны 15 (F в шестнадцатеричной), давая FF.
Ключевые Факторы, Которые Следует Учитывать
- Один байт (8 бит) может представлять ровно 256 различных значений — от 0 до 255 в десятичной системе, или от 00 до FF в шестнадцатеричной. Именно поэтому 255/FF — такое распространённое опорное значение в вычислительной технике — это максимальное значение, которое может хранить один байт, что проявляется повсюду: от каналов цвета RGB (0-255 на канал) до сетевых и файловых форматов.
- Восьмеричная система исторически была более распространена, чем сегодня, во многом из-за старых размеров машинного слова компьютеров. Восьмеричная система (основание 8) аккуратно делится на группы по 3 двоичных разряда, что подходило компьютерам, построенным на размерах слова, кратных 3 битам — современные вычисления в основном перешли на шестнадцатеричную систему (которая делится на группы по 4 бита), поскольку большинство современного оборудования использует размеры слова, кратные 4 и 8, хотя восьмеричная система всё ещё встречается в отдельных контекстах, таких как обозначение прав доступа к файлам Unix (например, chmod 755).
- Распространённая ошибка программиста — путать основание числа исходя только из контекста. Цифры “10” означают совершенно разные значения в зависимости от основания — 10 в десятичной, 2 в двоичной, 8 в восьмеричной, 16 в шестнадцатеричной системе — именно поэтому языки программирования обычно требуют явного префикса (например, 0x для шестнадцатеричной или 0b для двоичной), чтобы устранить любую неоднозначность относительно того, какое основание имеется в виду.
- Теоретически любое целое число можно представить в ЛЮБОМ основании, а не только в этих четырёх. Двоичная, восьмеричная, десятичная и шестнадцатеричная системы — это просто четыре основания, наиболее широко используемые в вычислительной технике и повседневной математике — тот же принцип позиционной записи, который использует этот калькулятор, распространяется на любое основание, например основание 3, основание 20 или основание 60 (основа того, как традиционно делятся время и углы).
Частые Ошибки
- Чтение числа со смешанным основанием без префикса как десятичного по умолчанию. «10» означает десять в десятичной системе, но всего два в двоичной — всегда проверяйте (или указывайте), в каком основании записано число, прежде чем выполнять с ним вычисления.
- Предположение, что ведущие нули меняют значение. Как и в десятичной системе,
0011в двоичной — то же значение, что и11— ведущие нули важны только для форматирования с фиксированной шириной (например, для отображения полного байта), а не для реального значения числа. - Забывание, что шестнадцатеричные цифры выше 9 используют буквы, а не двузначные числа.
Шестнадцатеричная десятка записывается как
A, а не10— запись10в шестнадцатеричной системе на самом деле означает шестнадцать в десятичной, что является частым источником значительных ошибок. - Попытка напрямую преобразовать отрицательное число. Как отмечено в вопросах выше, отрицательные двоичные/шестнадцатеричные значения зависят от выбранной битовой разрядности и соглашения о дополнительном коде — не существует единого однозначного преобразования, как для неотрицательных целых чисел.
Полезно Знать
- Работаете с сетевыми адресами, а не с произвольными числами? Калькулятор IP-Подсети применяет то же соотношение двоичной/десятичной систем непосредственно к адресам IPv4.
- Нужны очень большие или очень маленькие десятичные числа в компактной форме? Калькулятор Научной Записи занимается таким видом преобразования.
- Интересна гораздо более старая, связанная с позиционной, система нумерации? Калькулятор Римских Цифр переводит в римские цифры и обратно, используя совершенно иной (непозиционный) подход.