Бит
Бит — минимальная единица информации, принимающая одно из двух значений: 0 или 1. Название сокращено от binary digit; в теории информации бит равен количеству информации в выборе одного из двух равновероятных исходов.
Бит как значение и как единица измерения
Слово «бит» несёт два смысла, и различать их полезно. Первый — техническая ячейка, которая может находиться ровно в двух состояниях: заряд есть или нет, участок диска намагничен или нет, модуль QR-кода тёмный или светлый. Такое состояние обозначают цифрами 0 и 1, отсюда и название: сокращение от binary digit предложил статистик Джон Тьюки, а в научный оборот его ввёл Клод Шеннон в работе 1948 года «Математическая теория связи».
Второй смысл — единица количества информации. Один бит равен неопределённости выбора между двумя равновероятными исходами: сообщение «монета упала орлом» несёт ровно один бит. Из n бит складывается 2 в степени n различных комбинаций: 2 бита дают 4 варианта, 8 бит — 256, 16 бит — 65 536. Обратная формула отвечает на вопрос «сколько бит нужно»: для 10 цифр требуется чуть больше трёх бит, для 33 букв русского алфавита — шесть.
Эти два смысла совпадают только для равновероятных и независимых значений. Реальный текст предсказуем, поэтому 8 бит хранения переносят заметно меньше одного бита информации на разряд — расхождение измеряют через энтропию информации, и именно на нём зарабатывают алгоритмы сжатия.
Обозначение единицы: строчная латинская b или русское «бит», в отличие от заглавной B для байта. Кратные приставки применяются к битам преимущественно в связи: килобит, мегабит, гигабит.
Биты в кодах и на носителях
Матричные коды хранят биты буквально. Каждый модуль QR-кода — один бит: тёмный обычно означает 1, светлый 0. Сетка версии 1 состоит из 21 на 21 модуль, то есть 441 бита; из них служебные позиции занимают маркеры поиска, синхрополосы и информация о формате, а на полезные данные с коррекцией остаётся 208 бит.
Расход бит на символ зависит от режима кодирования. Цифровой режим упаковывает три цифры в 10 бит (примерно 3,33 бита на цифру), алфавитно-цифровой — два символа в 11 бит, байтовый тратит 8 бит на символ, режим кандзи — 13 бит на иероглиф. Отсюда следует практическое правило: одна и та же информация, записанная только цифрами, требует вдвое меньше места, чем та же строка в байтовом режиме, и код получается меньшей версии. Подробный расчёт вместимости разобран в термине про ёмкость QR-кода.
Линейные штрих-коды устроены так же, только в одном измерении. В EAN-13 каждая цифра занимает семь модулей — семь бит, где комбинация штрихов и пробелов задаёт значение; краевые и центральные ограничители добавляют ещё 11 модулей.
Избыточность тоже считают в битах. Простейшая схема — бит чётности: один дополнительный разряд обнаруживает нечётное число искажённых бит, но не указывает, где именно произошла ошибка. Коды Хэмминга добавляют несколько проверочных бит и позволяют исправить одиночную ошибку, а Рид — Соломон в QR-кодах работает уже группами по 8 бит и восстанавливает целые повреждённые участки.
Биты в секунду и байты в памяти
Самая частая практическая путаница возникает из-за того, что каналы связи измеряют в битах, а объёмы данных — в байтах. Тариф «100 Мбит/с» означает 100 миллионов бит в секунду, то есть 12,5 мегабайта в секунду при идеальном канале: делить надо на восемь. Файл на 1 ГБ по такому каналу качается не менее 80 секунд, и это без учёта служебных заголовков протоколов.
Разница в написании принципиальна: Мбит/с и МБ/с отличаются в восемь раз, а латинские Mb и MB — на одну заглавную букву. Провайдеры и производители сетевого оборудования всегда указывают биты, файловые менеджеры и торрент-клиенты обычно показывают байты.
В битах измеряют и другие технические характеристики: разрядность процессора (32-битный, 64-битный), глубину цвета (24 бита на пиксель, по 8 на канал), разрядность звука (16 или 24 бита на отсчёт), длину криптографического ключа (2048 бит для RSA, 256 бит для эллиптических кривых), битрейт видео и аудио.
От бита к байту и дальше
Работать с отдельными битами неудобно: память адресуется группами, и минимальный адресуемый блок практически везде — восемь бит. Такая группа называется байтом и вмещает 256 значений, чего хватает на латинский алфавит, цифры и управляющие символы.
Промежуточная единица в четыре бита называется ниббл или тетрада: она в точности соответствует одному шестнадцатеричному символу, поэтому байт всегда записывается двумя знаками, а 256-битный хеш — 64 знаками.
В сетевых стандартах группу из восьми бит называют октетом, чтобы исключить историческую двусмысленность слова «байт»: на машинах 1960-х годов байт мог содержать шесть, семь или девять бит. Дальше идут машинное слово (16, 32 или 64 бита в зависимости от архитектуры) и производные единицы объёма — килобайт, мегабайт, гигабайт.
Важный нюанс адресации: процессор не умеет прочитать один бит из памяти напрямую. Он читает байт целиком и выделяет нужный разряд битовыми операциями — маской и сдвигом. Поэтому логическое значение «да/нет» в структуре данных занимает обычно целый байт, если его специально не упаковали в битовое поле.
Частые вопросы
Сколько бит в байте?
Восемь. Это закреплено стандартом ISO/IEC 80000-13 и подтверждено всей практикой с середины 1960-х годов. Исторически байт определялся как группа бит, достаточная для кодирования одного символа, и на разных машинах содержал от шести до девяти бит. Чтобы обозначить группу ровно из восьми бит без разночтений, в стандартах связи применяют термин «октет».
Почему интернет на 100 Мбит/с качает файлы со скоростью 12 МБ/с?
Потому что тариф указан в мегабитах, а файловый менеджер показывает мегабайты. В байте восемь бит, значит, 100 Мбит/с равны 12,5 МБ/с в идеальных условиях. Реально получается немного меньше: часть полосы уходит на заголовки TCP/IP, подтверждения и служебный обмен. Скорость 12 МБ/с на стомегабитном канале означает, что канал работает штатно.
Что такое старший и младший бит?
В байте разряды нумеруют по их весу. Младший значащий бит имеет вес единицы и меняется при прибавлении единицы к числу, старший — вес 128 и определяет верхнюю половину диапазона. Порядок передачи и хранения разрядов задаётся протоколом: в одних форматах первым идёт старший бит, в других младший, и несовпадение этих соглашений — типичная причина ошибок при разборе двоичных данных.
Сколько бит информации несёт один символ русского текста?
При равновероятных 33 буквах теоретический минимум составил бы около пяти с половиной бит. Настоящий текст сильно избыточен: буквы встречаются неравномерно, сочетания предсказуемы, поэтому реальная энтропия русской прозы оценивается примерно в полтора-два бита на символ. Разницу между хранимыми битами и этой величиной и вычищают архиваторы.
Можно ли хранить меньше одного бита?
Как физическую ячейку — нет, минимальное различимое состояние одно. Как количество информации — да: если исходы неравновероятны, среднее количество информации на символ бывает дробным. Например, ответ на вопрос, ожидаемый с вероятностью 99 процентов, несёт около 0,08 бита. Именно поэтому арифметическое кодирование умеет тратить на символ дробное число бит, чего блочные схемы не позволяют.