Мы с детства считаем десятками — у нас десять цифр (0–9), и это десятичная система. Но десятка ничем не священна: просто у человека десять пальцев. Компьютер устроен из переключателей «включено/выключено», поэтому ему естественна двоичная система — всего две цифры, 0 и 1.
Число основание системы — это сколько в ней цифр. Главных систем в программировании четыре:
Система
Основание
Цифры
Префикс в Python
двоичная
2
0, 1
0b
восьмеричная
8
0–7
0o
десятичная
10
0–9
—
шестнадцатеричная
16
0–9, A–F
0x
Как «читается» число в любой системе
В десятичном числе 365 каждая цифра стоит на своём «разряде»: 3 сотни + 6 десятков + 5 единиц = 3·10² + 6·10¹ + 5·10⁰. В двоичной всё то же самое, только степени двойки. Двоичное 1011 — это 1·8 + 0·4 + 1·2 + 1·1 = 11.
▶ literals.py
Важно: 0b1011, 0xFF — это всё те же целые числа int, просто записанные в другой системе. Внутри Python хранит их одинаково, а печатает по умолчанию в десятичной.
Перевод в обе стороны
Готовые функцииИменованный блок кода, который можно вызывать многократно. Может принимать аргументы и возвращать результат. переводят число в строкуТекстовое значение в кавычках: "привет". Неизменяема. По-английски string (str). нужной системы: bin(), oct(), hex(). А функция int(строка, основание) читает строку как число в заданной системе.
▶ convert.py
💡Совет
Шестнадцатеричная система особенно популярна: одна 16-ричная цифра кодирует ровно 4 бита, поэтому байт (8 бит) — это две цифры. Цвета в вебе #FF8800, адреса памяти, хеши — всё это hex. Запомните: A=10, B=11, C=12, D=13, E=14, F=15.
💡Совет
Предскажите вывод. Чему равно двоичное 0b100 в десятичной системе? А 0b111? Запустите и проверьте — это степени двойки и «всё единицы».
▶ predict-bin.py
0b100 = 4 (это 2²), 0b111 = 7 (4+2+1), 0b1000 = 8 (2³). Полезное наблюдение: единица с n нулями в двоичной системе — это 2ⁿ, а n единиц подряд — это 2ⁿ − 1.
⚠️ Частые ошибки новичков
Ошибка. Забыть второй аргументЗначение, которое передаётся функции при вызове. Внутри функции оно доступно как параметр. у int() при переводе из другой системы. int("1011") прочитает строку как десятичное число 1011, а не как двоичное 11. Запустите код и почините: добавьте основание — int("1011", 2).
▶ broken-int.py
Заданиерешение.py
Переведите двоичное число "110100" в десятичное и сохраните результат в переменную value.
Заданиерешение.py
Дано десятичное число n = 255. Получите его шестнадцатеричное представление без префикса0x и сохраните в hex_str (должно получиться "ff").
❓Проверь себя
Сколько цифр в двоичной системе счисления?
Чему равно двоичное 0b101 в десятичной системе?
Что вернёт int("10", 2)?
ℹ️Важно
✅ Что вы узнали
Основание системы — количество её цифр (2, 8, 10, 16).
Префиксы в Python: 0b, 0o, 0x.
bin(), oct(), hex() переводят в строку.
int(строка, основание) читает число из любой системы.
Комментарии
Загрузка…
Загрузка комментариев…