Что это и что показывает
Системы счисления — это разные способы записать одно и то же число. Десятичная (основание 10) привычна людям, двоичная (основание 2) — родной язык процессора, шестнадцатеричная (основание 16) компактно представляет байты, а восьмеричная (основание 8) встречается в правах доступа Unix. Калькулятор переводит число из любой из этих систем во все остальные, не меняя его величины — меняется только запись.
Формула / как устроено
Число в системе с основанием b — это сумма цифр, умноженных на степени основания. Для шестнадцатеричного FF:
FF = F·16¹ + F·16⁰ = 15·16 + 15 = 255
Перевод выполняется в два шага: сначала число приводится к десятичному значению, затем это значение раскладывается по степеням целевого основания. В коде это parseInt(строка, основание) и число.toString(основание).
| Система | Основание | Цифры |
|---|---|---|
| Двоичная | 2 | 0, 1 |
| Восьмеричная | 8 | 0–7 |
| Десятичная | 10 | 0–9 |
| Шестнадцатеричная | 16 | 0–9, A–F |
Как посчитать вручную
- Чтобы перевести в десятичную: умножьте каждую цифру на основание в степени её позиции (справа налево, начиная с 0) и сложите.
- Чтобы из десятичной перевести в другую систему: делите число на основание, записывая остатки.
- Соберите остатки снизу вверх — это и есть результат.
- Проверьте обратным переводом в десятичную.
Пример
Переведём десятичное 255 в двоичную систему делением на 2:
255 / 2 = 127, остаток 1; 127 / 2 = 63, остаток 1; … все восемь остатков получаются единицами.
Результат: 11111111 (восемь единиц). Проверка: 128+64+32+16+8+4+2+1 = 255. А в шестнадцатеричной это FF.
Где применяется
Шестнадцатеричная запись используется для цветов в CSS, MAC-адресов, дампов памяти и байтовых данных. Двоичная нужна для понимания битовых масок, флагов и сетевых масок. Восьмеричная — это привычные права доступа Unix вроде chmod 755. Перевод систем счисления — базовый навык любого программиста и системного администратора.
Осторожно
- Путают цифры разных систем: буква F допустима в HEX, но не в десятичной или двоичной.
- Забывают, что позиции считаются с нуля справа: крайняя правая цифра умножается на основание в степени 0.
- Принимают восьмеричное
010за десятичное «десять» — на самом деле это 8. - Игнорируют регистр в HEX:
ffиFF— одно и то же число.