
Двоичный код (бинарный код): что это простыми словами
Двоичный код — это способ записать любую информацию всего двумя знаками: нулём и единицей. Число 13 превращается в 1101, буква A — в 01000001, чёрный пиксель — в 00000000. Никакой магии здесь нет: просто у алфавита ровно два символа вместо привычных десяти цифр или тридцати трёх букв.
Второе название — бинарный код, от латинского bini, «двойной». Оба термина означают одно и то же, и оба одинаково употребимы. Ниже — что такое бит и байт, как прочитать двоичную запись вручную, как сложить два двоичных числа, как выглядит поток бит в дампе файла и почему техника устроена именно так.
Что такое двоичный код простыми словами
Представьте ряд лампочек. Каждая либо горит, либо нет — третьего состояния нет. Договоримся: горит — единица, не горит — ноль. Ряд из восьми лампочек показывает 256 разных комбинаций, от «все погашены» до «все горят». Присвойте каждой комбинации значение — и получите код, которым можно записать число, букву, оттенок цвета или команду процессору.
Это и есть двоичный код. Он не про математику как таковую, он про способ представления. Комбинация 01000001 — это и число 65, и латинская буква A, и оттенок тёмно-серого в канале яркости. Смысл задаёт не сам код, а договорённость о том, как его читать: таблица символов, формат файла, протокол связи. Общая картина таких договорённостей — в обзоре по кодированию информации, здесь речь только о самой двоичной записи.
Двоичный код и двоичная система счисления — не одно и то же
Термины путают постоянно, хотя разница простая. Двоичная система счисления — это правила записи чисел по основанию 2, где каждый разряд весит вдвое больше соседа справа. Двоичный код — понятие шире: это любая запись информации нулями и единицами, включая ту, где чисел вообще нет. Штрих-код на пачке молока, азбука Морзе с точками и тире, флаги «прочитано / не прочитано» в почтовом ящике — всё это бинарные коды, но никак не арифметика.
Двоичная система — лишь один из способов записывать числа, и рядом с ней живут десятичная, восьмеричная, шестнадцатеричная. Как они соотносятся между собой и как пересчитывать числа из одной в другую — разобрано в обзорном материале про системы счисления. Здесь остаёмся строго внутри базы 2.
Бит и байт: из чего собран двоичный код
Бит (от binary digit — двоичная цифра) — минимальная единица информации. Один бит хранит ответ на один вопрос с двумя исходами: да или нет, включено или выключено, есть сигнал или нет. Больше одного бита из него не выжать.
Байт — группа из восьми бит, которую техника обрабатывает как единое целое. Восемь бит дают 2⁸ = 256 комбинаций, то есть один байт способен закодировать 256 разных значений: числа от 0 до 255, или 256 символов таблицы, или 256 градаций серого.
Сколько всего умещается в биты
| Бит | Комбинаций (2ⁿ) | Что этим кодируют |
|---|---|---|
| 1 | 2 | Флаг: да / нет, вкл / выкл |
| 4 | 16 | Полубайт (тетрада), одна цифра в hex |
| 7 | 128 | Классическая таблица ASCII |
| 8 | 256 | Байт: символ однобайтовой кодировки, один канал цвета |
| 10 | 1024 | Отсюда «кило» в килобайте — 1024, а не 1000 |
| 24 | 16 777 216 | Полноцветный пиксель: три канала по 8 бит |
| 32 | ≈ 4,29 млрд | Адреса IPv4, обычное целое в программах |
Закономерность видна сразу: каждый добавленный бит удваивает количество вариантов. Восемь бит — 256 значений, девять — уже 512. Именно поэтому объёмы данных растут скачками, а не плавно.
Биты в реальных единицах: канал, файл, кадр
Бит обозначают маленькой буквой b (по-русски «бит»), байт — большой B (по-русски «Б»). Провайдер продаёт скорость канала в мегабитах в секунду, а файловый менеджер показывает загрузку в мегабайтах — разница ровно восьмикратная. Тариф 300 Мбит/с при идеальной загрузке даёт около 37,5 МБ/с, поэтому фильм на 4 ГБ приезжает примерно за две минуты, а не за десять секунд.
Обратный пересчёт так же прост: умножьте байты на восемь и получите биты. Страница русского текста — около 2000 символов, в UTF-8 это примерно 4 КБ или порядка 32 тысяч бит. Один пиксель True Color стоит 24 бита, поэтому несжатый кадр 1920 × 1080 весит почти 50 миллионов бит. Битрейт, скорость канала и пропускную способность всегда указывают в битах, объём файла на диске — в байтах.
Вторая ловушка — приставки. В технике «кило» исторически означало 1024 (2¹⁰), а не 1000. Отсюда расхождение между надписью на коробке жёсткого диска и цифрой в проводнике: производитель считает гигабайт как миллиард байт, а система делит на 1024 трижды. Для развода понятий ввели кибибайт (КиБ), мебибайт (МиБ) и гибибайт (ГиБ) с множителем ровно 1024.
Как читать двоичный код: вес каждого разряда
Чтение двоичного числа — арифметика уровня начальной школы. Каждая позиция имеет свой вес, и веса идут степенями двойки справа налево: 1, 2, 4, 8, 16, 32, 64, 128 и дальше. Единица в разряде означает «этот вес берём», ноль — «пропускаем». Складываем взятые веса и получаем привычное число.
Разбор на примере
Возьмём запись 1101. Расставляем веса под цифрами справа налево:
| Разряд | 1 | 1 | 0 | 1 |
|---|---|---|---|---|
| Вес | 8 | 4 | 2 | 1 |
| Берём | 8 | 4 | — | 1 |
8 + 4 + 1 = 13. Значит, 1101 — это тринадцать.
Ещё примеры для тренировки: 101 = 4 + 1 = 5, 10110 = 16 + 4 + 2 = 22, 10101010 = 128 + 32 + 8 + 2 = 170. И полезный ориентир: 11111111 — это все восемь весов сразу, то есть 255, максимальное значение одного байта.
Четыре приёма ускоряют счёт. Запись оканчивается на 0 — число чётное, на 1 — нечётное. Единица с нулями всегда даёт степень двойки: 10000 = 16, 1000000 = 64. Строка из одних единиц равна степени двойки минус один: 1111 = 15, восемь единиц = 255. Ведущие нули на величину не влияют, их дописывают только ради выравнивания под восемь бит.
Как записать число двоичным кодом
Обратная задача решается тем же набором весов, только с конца. Берём число и «разбираем» его на степени двойки, начиная с самой крупной, которая ещё помещается.
Пример с числом 42. Самая большая подходящая степень — 32, остаётся 10. Следующая подходящая — 8, остаётся 2. Дальше — сама двойка, остаток 0. Взяли веса 32, 8 и 2, значит единицы стоят в соответствующих разрядах, остальные позиции — нули:
| Вес | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|
| Бит | 1 | 0 | 1 | 0 | 1 | 0 |
Получилось 101010. Проверка обратным ходом: 32 + 8 + 2 = 42. Сходится.
Метод весов удобен для небольших чисел — до пары сотен считается в уме за секунды. Для больших значений и для перевода в другие основания работает формальный алгоритм деления с остатком, описанный в материале про системы счисления.
Мини-таблица чисел от 0 до 16
| Десятичное | Двоичное | Десятичное | Двоичное |
|---|---|---|---|
| 0 | 0000 | 9 | 1001 |
| 1 | 0001 | 10 | 1010 |
| 2 | 0010 | 11 | 1011 |
| 3 | 0011 | 12 | 1100 |
| 4 | 0100 | 13 | 1101 |
| 5 | 0101 | 14 | 1110 |
| 6 | 0110 | 15 | 1111 |
| 7 | 0111 | 16 | 10000 |
| 8 | 1000 | 255 | 11111111 |
Первые шестнадцать значений стоит запомнить: любой байт — это две такие тетрады подряд.
Сложение в двоичном коде: перенос через разряд
Складывают двоичные числа столбиком, ровно как десятичные, только таблица сложения короче некуда: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, а 1 + 1 = 10 — в разряде остаётся ноль, единица уходит в перенос налево. Переполнение разряда наступает уже на двойке, поэтому переносы случаются почти в каждом столбце, и это единственное, что отличает двоичный столбик от школьного. Сложим 1011 и 0110, то есть 11 и 6:
| Вес | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|
| Перенос | 1 | 1 | 1 | — | — |
| Первое (11) | — | 1 | 0 | 1 | 1 |
| Второе (6) | — | 0 | 1 | 1 | 0 |
| Сумма (17) | 1 | 0 | 0 | 0 | 1 |
Идём справа налево. Крайний правый столбец: 1 + 0 = 1. Второй: 1 + 1 = 10, пишем 0, единицу в перенос. Третий: 0 + 1 плюс перенос = 10, снова пишем 0 и переносим. Четвёртый: 1 + 0 плюс перенос = 10, пишем 0, переносим. Слева появляется новый разряд с весом 16. Итог 10001 = 16 + 1 = 17, и это верно.
Сдвиг вместо умножения
Приписали ноль справа — умножили число на два: 1101 = 13, а 11010 = 26. Ровно как приписанный ноль в десятичной записи умножает на десять. Отбросили крайний правый разряд — разделили на два. Отсюда берутся операции сдвига, которые процессор выполняет за один такт: умножение на 8 внутри программы часто превращается в сдвиг на три позиции влево.
Вычитание и переполнение байта
Отдельной схемы вычитания в процессоре обычно нет: отрицательные числа хранят в дополнительном коде, где старший бит работает признаком знака, и вычитание сводится к сложению. Побочный эффект — несимметричный диапазон: в 8-битном знаковом типе помещаются значения от −128 до 127.
Второй побочный эффект — переполнение. Байт вмещает 255, и прибавленная к 11111111 единица выносит перенос за границу восьми разрядов. Хранить его негде, остаётся 00000000. Так рождаются классические баги со счётчиками, которые внезапно обнуляются, и старые игры, где 256-й уровень превращался в нулевой.
Буквы и сообщения в двоичном коде
Сам по себе двоичный код букв не знает. Он знает числа. Чтобы записать букву, её сначала заменяют номером по таблице символов, а уже номер переводят в биты. Вся разница между кодировками — в том, какой номер какой букве присвоен.
Латинские буквы, цифры и знаки препинания сидят в таблице ASCII, где на символ отведено семь бит (128 позиций); на практике их дополняют ведущим нулём до полного байта. Полный перечень номеров, включая управляющие коды, разобран в отдельном материале про таблицу ASCII, а здесь достаточно нескольких опорных значений:
| Символ | Номер | Двоичный код |
|---|---|---|
| пробел | 32 | 00100000 |
| A | 65 | 01000001 |
| Z | 90 | 01011010 |
| a | 97 | 01100001 |
Русских букв в ASCII нет — таблица создавалась под английский. В господствующей сегодня UTF-8 кириллический символ занимает два байта, в старой однобайтовой Windows-1251 — один, и двоичная запись одной и той же буквы зависит от того, какую кодировку выбрали:
| Буква | Код Юникода | UTF-8 (16 бит) | Windows-1251 (8 бит) |
|---|---|---|---|
| А | U+0410 | 11010000 10010000 | 11000000 |
| Б | U+0411 | 11010000 10010001 | 11000001 |
| а | U+0430 | 11010000 10110000 | 11100000 |
| я | U+044F | 11010001 10001111 | 11111111 |
Отсюда практический вывод: спросить «какой двоичный код у буквы Б» без указания кодировки — то же самое, что спросить размер обуви без указания системы. Ответ 11010000 10010001 верен для UTF-8, ответ 11000001 — для Windows-1251, и оба правильные в своём контексте. Когда программа читает байты в чужой кодировке, на экране появляются нечитаемые символы — почему так выходит и как чинится, разобрано в статье про кракозябры в тексте.
Как записать целое сообщение
Порядок действий один и тот же, сколько бы букв ни было: каждый символ по очереди заменяется своим номером, номер разворачивается в биты, байты выстраиваются в ряд.
- Выберите кодировку. Для латиницы — ASCII, она же начало UTF-8. Для русского текста — UTF-8, если не требуется совместимость со старой системой.
- Найдите номер каждого символа. В таблице символов или через любой конвертер.
- Переведите номера в биты. Методом весов, дополняя нулями слева до полного байта.
- Соедините байты подряд. Пробелы между ними ставят только для читаемости, в файле их нет — там сплошной поток бит.
Слово QR латиницей: Q = 81 = 01010001, R = 82 = 01010010. Итого два байта, 16 бит: 01010001 01010010. Слово код кириллицей в UTF-8 растягивается на шесть байт: 11010000 10111010, 11010000 10111110, 11010000 10110100. Слово мир любопытнее: у букв м и и первый байт 11010000, а у р уже 11010001 — она перевалила за границу первой половины кириллического диапазона.
Обратный разбор — та же операция задом наперёд: режем поток на восьмёрки, каждую читаем по весам, число ищем в таблице символов. Кириллицу UTF-8 режем по парам байтов, ориентируясь на маркеры: байт, начинающийся с 110, открывает двухбайтовую последовательность, байт с началом 10 — её продолжение.
Практическое правило: в двоичном коде нет «пробела между буквами». Границу задаёт только договорённость о длине символа. Потеряли синхронизацию на один бит — весь дальнейший текст превращается в мусор.
Почему техника выбрала ровно два состояния
Причина не в математической красоте, а в физике и в надёжности.
Два уровня различаются с огромным запасом
Транзистор — по сути переключатель: ток проходит или не проходит. Отличить «есть напряжение» от «нет напряжения» схема способна миллиарды раз в секунду и почти без ошибок. Двухуровневая логика прощает огромный разброс: всё ниже порога читается как ноль, всё выше — как единица. То же самое на любом носителе: намагничен участок или нет, есть на диске микроскопическая ямка или нет, прошёл импульс света по волокну или не прошёл.
Отсюда же главное свойство цифровой записи — она не портится при копировании. Сигнал может ослабнуть и обрасти шумом, но пока он различим относительно порога, на выходе получаются те же нули и единицы, что на входе. Аналоговая запись накапливает искажения на каждой перезаписи, двоичная — нет.
Под двоичную логику есть готовая математика
Булева алгебра с операциями И, ИЛИ, НЕ появилась ещё в середине XIX века, задолго до электроники, а в 1937 году Клод Шеннон связал её с работой переключательных схем. После этого конструирование техники стало собираться из готовых кирпичей: логический элемент из транзисторов, сумматор из логических элементов, процессор из сумматоров и регистров.
Ошибки в двоичном коде легко ловить
Когда состояний всего два, повреждённый бит — это просто перевёрнутое значение. На таком допущении строятся все схемы контроля: бит чётности, контрольные суммы, коды с исправлением ошибок. Приёмник пересчитывает контрольное значение и сравнивает с полученным — расхождение означает, что данные пришли битыми.
Многоуровневые схемы всё равно отдают наружу биты
Полностью двухуровневой техника не осталась: ячейка современной флеш-памяти хранит восемь или шестнадцать уровней заряда, укладывая в один элемент три-четыре бита. Но многоуровневость живёт внутри узла — контроллер сразу переводит уровни в биты, а платой становятся сложная коррекция ошибок и меньший ресурс перезаписи. Наружу всё равно выходит обычный двоичный поток.
Как двоичный код выглядит в дампе
Сырые биты вживую почти никто не рассматривает: строка из шестидесяти нулей и единиц глазами не читается. Поэтому байты показывают шестнадцатеричными парами — один байт ровно два знака, а поток превращается в аккуратную сетку. Такой вид называют дампом, и открывает его любой hex-редактор.
Возьмём строку QR-код в UTF-8. Латинские Q и R занимают по байту, дефис тоже, каждая кириллическая буква — два байта. Девять байт, 72 бита:
| Символ | Байты (двоичный код) | Он же в hex |
|---|---|---|
| Q | 01010001 | 51 |
| R | 01010010 | 52 |
| - | 00101101 | 2D |
| к | 11010000 10111010 | D0 BA |
| о | 11010000 10111110 | D0 BE |
| д | 11010000 10110100 | D0 B4 |
В окне редактора это три колонки: слева смещение от начала файла, в середине байты, справа их же попытка прочитаться как текст. Кириллица в правой колонке чаще всего показывается точками — редактор печатает каждый байт по отдельности.
Дамп позволяет опознать данные по первым же байтам, не открывая файл целиком. PNG начинается с 10001001 01010000 01001110 01000111 (в hex — 89 50 4E 47): три последних байта складываются в буквы PNG, а первый специально сделан «нетекстовым», чтобы файл не приняли за текстовый. Файл в UTF-8 иногда открывается тремя служебными байтами EF BB BF, из-за которых чужие парсеры спотыкаются на первой строке.
Здесь же видно, почему поток режут строго по восемь бит. Разметки внутри него нет: смещение на один бит рушит весь остаток файла и превращает текст в шум. В дампе байты уже разложены по ячейкам, границы не теряются.
Где двоичный код встречается каждый день
Он не спрятан глубоко в железе — его следы видны в обычных настройках и цифрах на экране.
- Цвет на экране. Каждый канал RGB — один байт, 256 градаций. Белый цвет — это 11111111 11111111 11111111, чёрный — сплошные нули.
- Маска подсети. Привычная 255.255.255.0 в двоичном виде — 11111111.11111111.11111111.00000000. Двадцать четыре единицы подряд, отсюда и запись /24.
- Права доступа к файлам. Тройка rwx — это три бита: 111 означает полный доступ, 101 — чтение и выполнение без записи.
Двоичный код в QR-кодах и штрих-кодах
Здесь двоичный код виден буквально глазами: тёмный элемент — единица, светлый — ноль. Оптический код и есть битовая карта, вынесенная на бумагу, и читается она как обычный поток бит.
Что лежит в сетке QR-символа
Каждая квадратная ячейка QR-символа хранит ровно один бит. Самый маленький символ первой версии — сетка 21 × 21, то есть 441 модуль, но заметная часть работает на служебные нужды: три маркера по углам, синхрополосы, поля с информацией о формате. Под нагрузку в первой версии остаётся 208 бит, то есть 26 байт вместе с проверочными.
Поток собирается по строгой схеме: четыре бита индикатора режима, счётчик длины, данные, терминатор из нулей. Оставшееся место добивают чередующимися байтами-заполнителями 11101100 и 00010001 — в дампе они узнаются сразу и означают недозаполненный символ. Дальше поток режут на восьмибитные кодовые слова, добавляют проверочные байты Рида — Соломона и раскладывают по сетке змейкой снизу вверх парами столбцов.
Последний штрих — маскирование. Биты данных складываются по модулю 2 с одним из восьми шаблонов, чтобы в узоре не появлялось крупных однотонных пятен и ложных маркеров: сканеру нужен контрастный рисунок, а не поле сплошных нулей. Номер маски занимает три бита в поле формата, и декодер снимает её первым же действием. Именно поэтому два QR-кода с почти одинаковым содержимым выглядят по-разному. Увидеть, как узор меняется от одной добавленной буквы, можно в генераторе QR-кодов.
Линейный штрих-код — те же биты в одном измерении
В EAN-13 символ состоит из 95 модулей одинаковой ширины, и каждый из них тоже бит: тёмный или светлый. Полосы разной толщины — это несколько одинаковых бит подряд, а не отдельные знаки. На одну цифру приходится семь модулей, рисунок задан таблицей: ноль в правой половине кода записывается как 1110010, в левой — как 0001101.
Самое интересное спрятано в левой половине: там каждая цифра записывается одним из двух семибитных наборов — с чётным или нечётным количеством тёмных модулей. Порядок чередования наборов сам по себе кодирует первую цифру номера, для которой отдельного места в символе не нашлось. Она физически не нарисована и читается по битовому рисунку остальных.
Шпаргалка
- Двоичный код — запись информации двумя знаками, 0 и 1. Второе название — бинарный.
- Бит — один знак, байт — восемь бит и 256 возможных значений.
- Чтение: веса разрядов справа налево 1, 2, 4, 8, 16, 32, 64, 128; сложить те, где стоит единица. 1101 = 13.
- Запись: разобрать число на степени двойки от большей к меньшей. 42 = 32 + 8 + 2 = 101010.
- Сложение: 1 + 1 = 10, единица уходит в перенос. 1011 + 0110 = 10001, то есть 11 + 6 = 17.
- Ноль справа удваивает число; 11111111 = 255 — потолок байта, плюс единица без запаса разрядов даёт 0.
- Буква сначала становится номером по таблице символов, потом номер становится битами.
- Скорость канала считают в битах, объём файла — в байтах; разница восьмикратная.
- В дампе байты показывают шестнадцатеричными парами: так те же биты читаются глазами.
- В QR-коде один модуль равен одному биту, и поверх данных наложена маска.
Частые вопросы
Как перевести букву или слово в двоичный код?
Перевод идёт в два шага, потому что напрямую буквы в биты не превращаются. Сначала символ заменяется своим номером по таблице кодировки, затем номер записывается двоичными разрядами. Для латиницы работает таблица ASCII: буква A имеет номер 65, а 65 в двоичном виде — это 01000001, поскольку 64 + 1 = 65. Строчная a идёт под номером 97 и даёт 01100001. Для кириллицы всё зависит от кодировки. В UTF-8 русская буква занимает два байта: А записывается как 11010000 10010000, Б как 11010000 10010001, строчная б как 11010000 10110001. В старой однобайтовой Windows-1251 те же буквы короче ровно вдвое: А это 11000000, Б это 11000001. Со словом действуйте посимвольно и ставьте байты подряд. Слово QR превращается в 01010001 01010010, а «код» в UTF-8 растягивается на шесть байт, потому что каждая из трёх букв стоит двух. Пробелы между группами нужны только глазу — в файле лежит непрерывный поток бит.
Сколько бит в одном байте и почему именно восемь?
В одном байте восемь бит, и это даёт 256 комбинаций — от 00000000 до 11111111, то есть значения от 0 до 255. Восьмёрка не была очевидной: на ранних машинах байт означал минимальную адресуемую порцию памяти и насчитывал шесть, семь или девять бит. Стандартом восьмибитный байт сделала архитектура IBM System/360 в середине 1960-х. Причины практические. Семи бит хватало на всю таблицу ASCII со 128 символами, а восьмой оставался под контроль чётности или под национальные буквы — именно так позже появились однобайтовые кириллические кодировки. К тому же восемь — степень двойки, что удобно схемотехнике: байт делится пополам на две тетрады по четыре бита, и каждая тетрада соответствует одной шестнадцатеричной цифре, поэтому дамп памяти читается парами символов. В сетевых стандартах, где историческая неоднозначность мешала, для группы из восьми бит используют термин «октет» — он не допускает других вариантов.
Как прочитать двоичное число вручную?
Нужен только ряд весов: справа налево разряды весят 1, 2, 4, 8, 16, 32, 64, 128 и дальше с удвоением. Подпишите веса под цифрами двоичной записи, возьмите те, над которыми стоит единица, и сложите. Для 1101 веса равны 8, 4, 2 и 1; единицы стоят над 8, 4 и 1, сумма равна 13. Для 10110 берём 16, 4 и 2 и получаем 22. Для 10101010 складываем 128, 32, 8 и 2 — выходит 170. Приёмы, ускоряющие счёт: запись оканчивается нулём — число чётное, единицей — нечётное; единица с нулями всегда даёт степень двойки (100000 это 32); строка из одних единиц равна степени двойки минус один, поэтому восемь единиц подряд дают 255, максимум для байта; приписанный справа ноль удваивает значение так же, как в десятичной записи умножает на десять. Ведущие нули слева на величину не влияют и нужны лишь для выравнивания записи под восемь разрядов, чтобы байты было удобнее различать глазами.
Как складывать двоичные числа и что такое переполнение?
Складывают столбиком справа налево, как десятичные, но таблица сложения совсем короткая: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, а 1 + 1 = 10, то есть в разряде остаётся ноль и единица уходит в перенос налево. Разряд переполняется уже на двойке, поэтому переносы идут почти в каждом столбце. Сложим 1011 и 0110 (это 11 и 6). Правый столбец даёт 1. Следующий: 1 + 1 = 10, пишем 0, переносим единицу. Третий и четвёртый по той же схеме дают 10 с переносом. Слева открывается новый разряд, получается 10001, то есть 17. Переполнение возникает, когда перенос выходит за отведённое число разрядов. Байт вмещает максимум 11111111, то есть 255; прибавили единицу, а хранить перенос негде — останутся восемь нулей, и счётчик покажет ноль вместо 256. У знаковых типов картина похожая: 32-битное целое упирается примерно в 2,1 миллиарда и на следующем шаге уходит в минус. Отсюда классические сбои со счётчиками и датами.
Чем двоичный код отличается от двоичной системы счисления?
Двоичная система счисления — это правила записи чисел по основанию 2: разряды идут степенями двойки, есть только цифры 0 и 1, работают привычные сложение и умножение. Она стоит в одном ряду с десятичной и шестнадцатеричной и занимается исключительно числами. Двоичный код — понятие шире: так называют любое представление информации через два состояния, независимо от того, есть ли в нём арифметика. Флаг «прочитано или нет», чёрные и белые модули QR-символа, полосы штрих-кода, точки и тире азбуки Морзе — всё это бинарные коды, но числами там ничего не считают. Пересечение есть: когда двоичным кодом записывают именно число, работает как раз двоичная система счисления. Но кодирование буквы, цвета пикселя или команды процессора выходит за её рамки — смысл битовой комбинации задаёт внешняя договорённость. Система счисления отвечает на вопрос «сколько», двоичный код — на вопрос «как это записать двумя знаками».
Сколько бит занимают текст, фотография и минута видео?
Считается это в два действия: находим объём в байтах и умножаем на восемь. Страница русского текста — примерно 2000 символов, в UTF-8 каждый кириллический символ весит два байта, значит около 4 КБ или порядка 32 тысяч бит. Английская страница того же объёма уложится вдвое компактнее. Несжатый кадр 1920 × 1080 в полном цвете занимает 1920 × 1080 × 24 ≈ 50 миллионов бит, примерно 6 МБ. Отсюда понятно, почему видео без сжатия нежизнеспособно: тридцать таких кадров в секунду дали бы под 1,5 гигабита. Реальный поток 1080p идёт на 8 Мбит/с, то есть минута видео — это 480 миллионов бит или около 60 МБ. Главное не путать единицы: битрейт и скорость канала всегда указывают в битах, размер файла на диске — в байтах, и между ними ровно восьмикратная разница.