Двоичная и шестнадцатеричная системы
Урок объясняет, почему процессор живёт в двоичной системе, а программисты пишут в шестнадцатеричной.
Бит — один разряд двоичного числа (0 или 1); восемь бит образуют байт.
Почему всё в двоичном виде
Внутри процессора есть только два устойчивых состояния: есть напряжение или нет. Поэтому естественная система счисления для машины — двоичная: каждый разряд это 0 или 1. Число 1011 в двоичном виде — это 8 + 0 + 2 + 1 = 11.
| Двоичное | Десятичное |
| 0001 | 1 |
| 0010 | 2 |
| 0100 | 4 |
| 1000 | 8 |
| 1011 | 11 |
Зачем нужен шестнадцатеричный
Длинные двоичные числа тяжело читать: 11110000 легко спутать. Шестнадцатеричная система (основание 16, цифры 0–9 и A–F) удобна тем, что одна hex-цифра ровно равна четырём битам. Поэтому байт всегда записывается двумя hex-цифрами:
двоичное 1111 0000 hex F 0 -> 0xF0 десятичное 240
В ассемблере hex пишут с префиксом 0x (mov rax, 0xFF) — так короче и нагляднее видно границы байтов.
Как работает под капотом
Python умеет переводить числа между системами штатно — проверим соответствия:
n = 0b1011 # двоичный литерал = 11
print("число:", n)
print("в hex:", hex(n))
print("в bin:", bin(0xF0))
print("0xFF =", 0xFF)Вывод:
число: 11 в hex: 0xb в bin: 0b11110000 0xFF = 255
Один байт хранит значения от 0 до 255 (это 2 в степени 8 минус 1). Два байта — до 65535, восемь байт (как в rax) — гигантский диапазон до 18 с лишним квинтиллионов. Понимание степеней двойки — основа всей низкоуровневой работы.
Частые ошибки
- Считать, что 0xFF это 16. Нет:
0xFF= 15·16 + 15 = 255.F— это 15. - Путать количество бит и максимум значения. 8 бит дают 256 разных значений (0…255), а не 8 и не 128.
- Забывать префикс системы.
10в десятичном это десять,0b10это два,0x10это шестнадцать.
Итог
- Процессор работает в двоичной системе: бит — 0 или 1, байт — 8 бит.
- Шестнадцатеричная запись компактна: одна цифра = 4 бита, байт = две цифры.
- Один байт хранит значения 0…255 (2 в степени 8).
- В ассемблере hex пишут с префиксом
0x.