Перевод в двоичный код
Калькулятор переводит текст в двоичный код и обратно в трёх кодировках, а также показывает, как получить двоичную запись числа. Байты выводятся строго по 8 бит с ведущими нулями, поэтому результат совпадает с тем, что дают редакторы и языки программирования.
- текст в двоичный код и обратно, пересчёт идёт прямо при вводе;
- кодировки UTF-8, ASCII и Windows-1251 - видно, как одна и та же фраза меняет длину;
- выбор разделителя: пробел, запятая, каждый байт с новой строки или сплошной поток;
- разбор по символам: символ, десятичный код, шестнадцатеричный и двоичный;
- перевод числа в двоичную, восьмеричную и шестнадцатеричную систему с пошаговым делением;
- копирование результата и выгрузка в файл.
Что такое двоичный код
Двоичный код - это запись информации всего двумя знаками, 0 и 1. Один такой знак называется битом. Выбор в пользу двух состояний не случаен: транзистору проще надёжно различать «есть напряжение» и «нет напряжения», чем десять уровней сигнала.
Восемь бит объединяют в байт. Байт принимает 28 = 256 разных значений, то есть числа от 0 до 255. Именно байт стал единицей, которой измеряют объём данных и в которой хранят символы текста.
Как текст превращается в код
Компьютер не хранит буквы. Он хранит числа, а какое число какой букве соответствует, задаёт кодировка. Перевод текста в двоичный код идёт в три шага:
- каждый символ заменяют его числовым кодом по выбранной кодировке;
- число переводят в двоичную систему;
- запись дополняют слева нулями до целого числа байт.
Например, слово «Hi» в UTF-8 превращается в 01001000 01101001: «H» имеет код 72, «i» - код 105.
ASCII, UTF-8 и Windows-1251
Кодировка решает, сколько байт займёт символ и будет ли он вообще записан.
| Кодировка | Размер символа | Что покрывает |
|---|---|---|
| ASCII | 1 байт (реально 7 бит) | 128 символов: латиница, цифры, знаки препинания. Кириллицы нет |
| UTF-8 | от 1 до 4 байт | весь Unicode: латиница 1 байт, кириллица 2, эмодзи 4 |
| Windows-1251 | 1 байт | латиница и кириллица, по одному байту на символ |
Разница хорошо видна на слове «Привет». В UTF-8 оно занимает 12 байт, потому что каждая русская буква кодируется двумя байтами. В Windows-1251 то же слово укладывается в 6 байт. При этом английское «Hello» в обеих кодировках даст одинаковые 5 байт, потому что UTF-8 совместим с ASCII в первых 128 позициях.
Отсюда растут и «кракозябры»: если текст записали в Windows-1251, а читают как UTF-8, байты кириллицы не складываются в правильные последовательности и превращаются в мусор.
Почему «A» это 01000001, а не 1000001
Код латинской «A» равен 65. Если перевести 65 в двоичную систему напрямую, получится 1000001 - семь знаков. Но байт всегда состоит из восьми бит, поэтому слева дописывают ведущий ноль.
Это не украшение записи. Двоичный код идёт сплошным потоком, и разбить его на символы можно только потому, что каждый байт занимает ровно 8 позиций. Конвертеры, которые выдают 7 бит, ломают совместимость: их результат нельзя вставить в редактор или прочитать чужим инструментом.
Таблица символов
| Символ | Десятичный код | Двоичный код | Кодировка |
|---|---|---|---|
| пробел | 32 | 00100000 | любая |
| 0 | 48 | 00110000 | любая |
| A | 65 | 01000001 | любая |
| a | 97 | 01100001 | любая |
| А (русская) | 192 | 11000000 | Windows-1251 |
| я | 255 | 11111111 | Windows-1251 |
| Д | 208 148 | 11010000 10010100 | UTF-8 |
Обратите внимание на последнюю строку: в UTF-8 одна русская буква описывается парой байт, поэтому и десятичных кодов там два.
Перевод числа в двоичную систему
Числовой режим решает вторую задачу, которую тоже называют переводом в двоичный код: получить двоичную запись числа. Способ школьный - деление на 2 с остатками.
Возьмём 42. Делим на 2 и записываем остатки: 42:2 = 21 (остаток 0), 21:2 = 10 (1), 10:2 = 5 (0), 5:2 = 2 (1), 2:2 = 1 (0), 1:2 = 0 (1). Читаем остатки снизу вверх и получаем 101010.
Проверить легко разложением по степеням двойки: 101010 это 32 + 8 + 2 = 42. Калькулятор показывает все шаги деления, а заодно восьмеричную и шестнадцатеричную запись и количество разрядов.
Где это применяется
- Учёба. Задачи по информатике на перевод между системами счисления и на кодирование текста.
- Разбор кодировок. Когда текст пришёл «кракозябрами», сравнение байт в UTF-8 и Windows-1251 показывает, где произошла подмена.
- Побитовые операции. Флаги и маски в программировании удобно читать именно в двоичном виде.
- Сети. Маска подсети 255.255.255.0 в двоичной записи это 11111111 11111111 11111111 00000000, и по ней сразу видно границу сети.
Как пользоваться калькулятором
- Выберите вкладку: «Текст» для перевода фраз, «Число» для перевода чисел.
- Введите текст - двоичный код появится сразу; либо вставьте код в правое поле, чтобы получить текст.
- Задайте кодировку и разделитель, если нужен формат, отличный от UTF-8 с пробелами.
- Скопируйте результат или выгрузите его в файл.
Частые вопросы о переводе в двоичный код
Код латинской «A» равен 65, а 65 в двоичной системе - это 1000001, всего семь знаков. Байт всегда состоит из восьми бит, поэтому слева дописывают ведущий ноль: 01000001. Без него поток нельзя разбить на символы - непонятно, где заканчивается один байт и начинается следующий.
В UTF-8 длина кода переменная. Первые 128 символов (латиница, цифры, знаки препинания) достались от ASCII и занимают один байт. Кириллица лежит дальше в таблице Unicode, поэтому кодируется двумя байтами: «Д» это 11010000 10010100. Если выбрать однобайтовую кодировку Windows-1251, та же «Д» займёт один байт - 11000100.
ASCII описывает только 128 символов и не содержит кириллицы. UTF-8 покрывает весь Unicode, при этом полностью совместим с ASCII: английский текст в обеих кодировках выглядит одинаково. Именно поэтому UTF-8 стал стандартом веба и выбран по умолчанию в калькуляторе.
Вставьте код в поле «Двоичный код» и выберите ту же кодировку, в которой он был получен. Калькулятор разобьёт поток на группы по 8 бит и соберёт символы. Если длина не кратна восьми или встретился символ кроме 0 и 1, инструмент скажет об этом вместо того, чтобы молча выдать мусор.
Делите число на 2 и записывайте остатки, пока не получите ноль, затем читайте остатки снизу вверх. Для 42: 42:2=21 (0), 21:2=10 (1), 10:2=5 (0), 5:2=2 (1), 2:2=1 (0), 1:2=0 (1). Снизу вверх получается 101010. Во вкладке «Число» этот разбор показан по шагам.
В ASCII и Windows-1251 - ровно 8 бит на символ. В UTF-8 от 8 до 32 бит: латиница 8, кириллица 16, редкие знаки и эмодзи до 32. Поэтому одна и та же фраза в разных кодировках даёт двоичный код разной длины.
Почти всегда причина в том, что код записан в одной кодировке, а расшифровывают его в другой. Кириллица из Windows-1251, прочитанная как UTF-8, распадается на нечитаемые байты. Переключите кодировку в калькуляторе и попробуйте снова.
Источники
- RFC 3629 «UTF-8, a transformation format of ISO 10646» - правила кодирования UTF-8 и длина последовательностей.
- ISO/IEC 10646 «Universal Coded Character Set (UCS)» - таблица символов Unicode.
- ISO/IEC 646 «Information technology. ISO 7-bit coded character set for information interchange» - основа ASCII.
- Кодовая страница Windows-1251 (CP1251) - однобайтовая кириллическая кодировка Microsoft.
Другие конвертеры
- Конвертер систем счисления - перевод между двоичной, восьмеричной и шестнадцатеричной.
- Килобайты в байты - перевод единиц информации.
- Инженерный калькулятор - выражения со скобками и функциями.
- Конвертер длины - метры, километры, дюймы и футы.
Комментарии