tariel.ge › Полезное: бесплатные книги › Программирование: от нулей и единиц до PythonБесплатно · автор Тариел Бежанидзе
← Учебник по программированию ЛИСТ 01БЛОК 0 — КАК УСТРОЕН КОМПЬЮТЕРРЕВ. 1
Глава 01 · Как устроен компьютер изнутри

Биты и байты: как компьютер представляет числа

Прежде чем писать код на Python, полезно честно понять, что физически происходит внутри компьютера, когда он "думает" — и это гораздо ближе к теме логических элементов, чем кажется на первый взгляд.

Бит — не абстракция, а реальное физическое состояние

Бит — минимальная единица информации, способная принимать одно из двух значений: 0 или 1. Внутри компьютера это не математическая условность — это реальное физическое состояние: транзистор либо пропускает ток, либо нет; напряжение на линии либо высокое, либо низкое. Если ты уже знаком с логическими элементами (И, ИЛИ, НЕ — тема из практического курса электроники), то бит — это буквально то же самое "0 или 1", про которое там шла речь, только теперь применённое не к одной лампочке, а к триллионам транзисторов внутри процессора.

Байт — восемь битов вместе

Байт — группа из 8 битов, стандартная единица, с которой компьютер оперирует как с одним "куском" данных. Почему именно 8, а не, скажем, 6 или 10 — во многом историческое стечение обстоятельств: 8 бит дают ровно 256 возможных комбинаций, чего хватало для представления букв, цифр и служебных символов в ранних кодировках (тема следующей главы), и это число оказалось удобным для аппаратной реализации. 4 бита отдельно иногда называют "полубайтом" (nibble) — половина байта, используется, например, при записи байта в шестнадцатеричном виде (глава 02).

Один байт — восемь битов: 0 0 0 0 0 1 0 1 00000101 = число 5 в десятичной системе
Каждая позиция бита — это степень двойки, совсем как разряды в привычной десятичной записи

Как читать двоичное число

Десятичная система, к которой ты привык, — позиционная: каждая цифра числа "весит" в 10 раз больше предыдущей (единицы, десятки, сотни...). Двоичная система устроена так же, но каждая позиция весит в 2 раза больше предыдущей — не десятки, а двойки, четвёрки, восьмёрки и так далее.

Пример: превращаем 00000101 в десятичное число

Читая справа налево, позиции весят 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-битной эпохи
Откуда взялся знаменитый предел 4 ГБ памяти у старых систем

Ровно из этой таблицы: 32-битный указатель адреса памяти способен различить не больше 2³² ≈ 4.3 миллиарда уникальных ячеек — отсюда практическое ограничение "32-битная система не может использовать больше ~4 ГБ оперативной памяти", о котором могли слышать те, кто застал раннюю эпоху 64-битных систем и связанный с этим переход. Это не искусственное ограничение производителя, а прямое следствие количества битов, отведённых под адрес.

Килобайт — 1000 или 1024?

Ещё один источник путаницы напрямую связан со степенями двойки: в компьютерном мире исторически килобайт нередко означал 1024 байта (2¹⁰), а не ровно 1000, как в обычной метрической системе. Производители накопителей чаще считают в "настоящих" 1000, 1000×1000 и так далее (то есть используют десятичные приставки честно), тогда как операционные системы иногда показывают размер файла в кибибайтах (1024) под тем же названием "килобайт" — отсюда классическое недоумение "почему купленный диск на 1 ТБ показывает в системе меньше, чем 1000 ГБ". Оба подхода по-своему правильны, путаница — просто в том, что одно и то же слово исторически использовалось для двух разных, хоть и близких величин.

Что дальше

Следующая глава — не просто двоичная система, а два дополнительных "диалекта" записи тех же самых битов: восьмеричная и особенно шестнадцатеричная системы счисления, без которых невозможно комфортно читать многое в мире программирования — от цветов в вебе до дампов памяти.

Глава01 — Биты и байты
Блок0 — Как устроен компьютер
Далее02 — Системы счисления
СтатусГотово · рев. 1
↑ К оглавлению Следующая глава 02 · Системы счисления →

Книга бесплатна для чтения. Автор — Тариел Бежанидзе, компьютерный мастер в Батуми · tariel.ge · все бесплатные книги. Копировать текст целиком на другие сайты — только со ссылкой на источник.