Прежде чем писать код на Python, полезно честно понять, что физически происходит внутри компьютера, когда он "думает" — и это гораздо ближе к теме логических элементов, чем кажется на первый взгляд.
Бит — минимальная единица информации, способная принимать одно из двух значений: 0 или 1. Внутри компьютера это не математическая условность — это реальное физическое состояние: транзистор либо пропускает ток, либо нет; напряжение на линии либо высокое, либо низкое. Если ты уже знаком с логическими элементами (И, ИЛИ, НЕ — тема из практического курса электроники), то бит — это буквально то же самое "0 или 1", про которое там шла речь, только теперь применённое не к одной лампочке, а к триллионам транзисторов внутри процессора.
Байт — группа из 8 битов, стандартная единица, с которой компьютер оперирует как с одним "куском" данных. Почему именно 8, а не, скажем, 6 или 10 — во многом историческое стечение обстоятельств: 8 бит дают ровно 256 возможных комбинаций, чего хватало для представления букв, цифр и служебных символов в ранних кодировках (тема следующей главы), и это число оказалось удобным для аппаратной реализации. 4 бита отдельно иногда называют "полубайтом" (nibble) — половина байта, используется, например, при записи байта в шестнадцатеричном виде (глава 02).
Десятичная система, к которой ты привык, — позиционная: каждая цифра числа "весит" в 10 раз больше предыдущей (единицы, десятки, сотни...). Двоичная система устроена так же, но каждая позиция весит в 2 раза больше предыдущей — не десятки, а двойки, четвёрки, восьмёрки и так далее.
Читая справа налево, позиции весят 1, 2, 4, 8, 16, 32, 64, 128. У числа 00000101 единицы стоят в позициях с весом 1 и 4 (остальные позиции — нули). Складываем: 4 + 1 = 5. Именно так внутри компьютера физически хранится число 5 — восемь битов, из которых только два "включены".
| Число битов | Количество значений | Практическая связь |
|---|---|---|
| 1 бит | 2 | Одно логическое состояние — да/нет, включено/выключено |
| 8 бит (1 байт) | 256 | Один символ текста в старых однобайтовых кодировках (глава 03) |
| 16 бит | 65 536 | Символ в базовой части Unicode, некоторые старые ограничения памяти |
| 32 бита | ~4.3 миллиарда | Классическое ограничение адресуемой памяти "32-битных" систем — знаменитый предел в 4 ГБ |
| 64 бита | ~18.4 квинтиллиона | Современный стандарт, снимающий практические ограничения 32-битной эпохи |
Ровно из этой таблицы: 32-битный указатель адреса памяти способен различить не больше 2³² ≈ 4.3 миллиарда уникальных ячеек — отсюда практическое ограничение "32-битная система не может использовать больше ~4 ГБ оперативной памяти", о котором могли слышать те, кто застал раннюю эпоху 64-битных систем и связанный с этим переход. Это не искусственное ограничение производителя, а прямое следствие количества битов, отведённых под адрес.
Ещё один источник путаницы напрямую связан со степенями двойки: в компьютерном мире исторически килобайт нередко означал 1024 байта (2¹⁰), а не ровно 1000, как в обычной метрической системе. Производители накопителей чаще считают в "настоящих" 1000, 1000×1000 и так далее (то есть используют десятичные приставки честно), тогда как операционные системы иногда показывают размер файла в кибибайтах (1024) под тем же названием "килобайт" — отсюда классическое недоумение "почему купленный диск на 1 ТБ показывает в системе меньше, чем 1000 ГБ". Оба подхода по-своему правильны, путаница — просто в том, что одно и то же слово исторически использовалось для двух разных, хоть и близких величин.
Следующая глава — не просто двоичная система, а два дополнительных "диалекта" записи тех же самых битов: восьмеричная и особенно шестнадцатеричная системы счисления, без которых невозможно комфортно читать многое в мире программирования — от цветов в вебе до дампов памяти.
Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.