Все статьи

Системы счисления: зачем нужны двоичная, восьмеричная и шестнадцатеричная

До реформы Петра I на Руси не было арабских цифр — числа записывали буквами кириллицы со значком «титло» над ними: «҂а» означало 1000, «в» — 2, а «і҃в» — 12. Только указом 1699–1701 годов гражданская печать перешла на привычные нам арабские цифры, которые в компьютере, в свою очередь, — лишь одно из нескольких равноправных представлений одного и того же числа.

Как выглядела кириллическая система счисления

В буквенной цифири каждая буква алфавита от «а» до «ѳ» обозначала число: единицы, десятки и сотни писались отдельными буквами, а не позиционно, как в арабской системе. Из-за этого запись больших чисел была громоздкой, а вычисления в столбик — почти невозможными; переход на позиционную арабскую нотацию был не просто сменой алфавита цифр, а сменой самого способа считать.

Шестнадцатеричная система в повседневной разработке

Один шестнадцатеричный символ точно соответствует четырём битам, поэтому пара таких символов компактно описывает один байт: #3A7FD9 — это цвет в CSS, а 00:1A:2B:3C:4D:5E — MAC-адрес сетевой карты, где каждая пара шестнадцатеричных цифр — тоже байт. Такая запись короче двоичной в четыре раза и при этом почти без усилий переводится в неё обратно.

Восьмеричная система в правах доступа Unix

Восьмеричная система удобна тем, что один разряд — это ровно три бита, а chmod 755 компактно описывает права владельца, группы и остальных: 7 = «rwx», 5 = «r-x», 5 = «r-x». Разобрать такую запись вручную проще, чем читать 9 двоичных разрядов подряд.

Зачем это нужно

  • Перевести цвет из шестнадцатеричного формата CSS в десятичные значения RGB.
  • Понять двоичное представление числа при работе с побитовыми операциями.
  • Расшифровать восьмеричные права доступа к файлам в Unix-системах.

Почему Base64 — это не система счисления

Base64 часто путают с конвертацией систем счисления из-за похожего названия, но это принципиально другое — кодирование произвольных бинарных данных (например, изображения или файла) в текстовую строку из 64 символов, а не способ записи одного числа. Число 255 в шестнадцатеричной системе — это FF, а то же число, закодированное в Base64 как один байт, выглядит совсем иначе и имеет другое назначение — передачу бинарных данных текстовыми каналами.

Попробовать инструмент