Перейти к основному содержанию
CalcMax

Конвертер из 16-ричной в двоичную

Результат

10101000111111

Двоичное

Сгруппировано по четыре
0010 1010 0011 1111

Конвертер из 16-ричной в двоичную переписывает шестнадцатеричное число в двоичную запись, и из всех переводов на этом сайте он единственный, которому арифметика не нужна вовсе. Одна шестнадцатеричная цифра — это ровно четыре бита: не совпадение какого-то конкретного числа, а причина, по которой шестнадцатеричная запись вообще существует. Поэтому каждый знак заменяется своими четырьмя двоичными цифрами, и между знаками ничего не переносится. 2 превращается в 0010, A — в 1010, 3 — в 0011, F — в 1111, значит 2A3F даёт 10101000111111. Правил замены здесь ровно шестнадцать, и этот набор никогда не растёт: 0 — это 0000, 1 — это 0001, и счёт идёт вверх по двоичной записи до F, то есть до 1111. Каждый знак стоит четырёх двоичных цифр независимо от своей позиции — в отличие от десятичной записи, где вес цифры зависит от того, где она стоит; иначе говоря, двоичное число получается чистой заменой знаков, а не вычислением. Одна деталь легко сбивает с толку. Знаки ответа напечатаны дважды: сплошной строкой и разрезанными на группы по четыре, и в группах строка длиннее, потому что её первая группа дополнена нулями. 2A3F — это четырнадцать бит, поэтому в группах он выглядит как 0010 1010 0011 1111: шестнадцать знаков, и два ведущих нуля добавлены спереди. Значения ведущие нули не меняют; они нужны, чтобы граница между второй и третьей группами была видна, а не отсчитывалась вручную. Регистр букв не важен: 2a3f и 2A3F — одно и то же число и дают один и тот же ответ, а это существенно, потому что шестнадцатеричные строки в природе — значения цвета, хеши, идентификаторы — обычно пишутся строчными. Все строки панели — машинные: разделители разрядов в них не ставятся, а пробелы в группах отмечают границы по четыре бита, а не разряды.

Каждый знак числа 2A3F, развёрнутый в свои четыре двоичные цифры

Шестнадцатеричный знакПолубайтДесятичное значение
200102
A101010
300113
F111115

Четыре строки, по одной на знак, и это весь метод — пятой строки добавлять нечего и переносов объяснять не нужно. Третий столбец — это знак, прочитанный как число, то есть значение, которое складывается из четырёх бит второго столбца: A — это десять, потому что 1010 — это 8 + 2, а F — пятнадцать, потому что 1111 — это 8 + 4 + 2 + 1. Прочитайте второй столбец сверху вниз и соедините — получится двоичный ответ; прочитайте третий — и получится то, что нужно было бы, если бы спросили десятичное значение. На первую строку стоит посмотреть ради правила дополнения: 2 — это 0010, с ведущим нулём, который самому числу не нужен, и этот ноль стоит там, чтобы строка была шириной в четыре знака, как и остальные три. Таблица закреплена на 2A3F, тогда как панель выше переводит то, что вы ввели.

Формула

2A3F ⇒ 2 → 0010, A → 1010, 3 → 0011, F → 1111 ⇒ 10101000111111, в группах 0010 1010 0011 1111

2A3F
Шестнадцатеричное число для перевода. Регистр букв не важен, поэтому 2a3f и 2A3F — одно и то же значение; ответ всегда печатается прописными, и это принятая на сайте запись двоичных и шестнадцатеричных чисел
один знак
Единица, в которой работает этот перевод. Каждый знак обрабатывается сам по себе, и в следующий ничего не переносится — поэтому перевод из шестнадцатеричной в двоичную можно делать слева направо, в любом порядке и не держа в голове накопленную сумму
4 бита
Сколько двоичных цифр даёт каждый знак, без исключений. Шестнадцать возможных знаков и шестнадцать возможных четырёхбитных наборов — ровно поэтому два основания и сходятся, а значит длина двоичного ответа всегда ровно в четыре раза больше числа знаков
0000 — 1111
Полный набор, который может дать один знак: счёт вверх по двоичной записи от 0 до 15. Это и есть таблица замены: 0 — это 0000, 1 — это 0001, счёт продолжается до 9 как 1001, а затем от A до F как 1010–1111
⇒ 10101000111111
Знаки, соединённые без промежутков. Это собственная двоичная запись числа, и она не дополняется: ведущие нули отбрасываются, поэтому значение, у которого старшие биты нулевые, получается короче, чем в четыре раза больше числа знаков
0010 1010 0011 1111
Те же знаки, разрезанные по четыре, и вот эта строка дополнена: первая группа здесь 0010, а не 10, два ведущих нуля добавлены, чтобы каждая группа была шириной в четыре знака и границы совпадали с шестнадцатеричными знаками
2⁵³ − 1
Потолок ввода, и здесь он приходит в непривычном виде: четырнадцать шестнадцатеричных знаков, то есть 1FFFFFFFFFFFFF, то есть пятьдесят три двоичные цифры, то есть 9 007 199 254 740 991 в десятичной записи. Более длинный ввод отклоняется, а не переводится

Шестнадцатеричную запись пишут люди, а двоичную исполняют машины, поэтому переход между ними — ежедневный шаг для всякого, кто работает близко к железу. Код цвета вроде 2A3F — это четыре шестнадцатеричных знака, и увидеть, какие биты в нём выставлены, — а именно это на самом деле спрашивают маска, флаг прав или настройка регистра — значит посмотреть на него в двоичной записи. Хеши, контрольные суммы и битовые флаги, напечатанные в шестнадцатеричной записи, читают так же, и адреса в отладчике, и флаги в перехваченном пакете. Перевод стоит делать и в обратную сторону, и поэтому это отдельная страница: двоичная запись нечитаема уже после нескольких знаков, так что значение, найденное в двоичном виде, обычно переписывают в шестнадцатеричном, прежде чем передать дальше. В учёбе это задание звучит как перевод из шестнадцатеричной в двоичную, и показывать в ходе решения, кроме подстановки, нечего — но дополнение нулями стоит выписать, потому что ответ вроде 10101000111111 и ответ вроде 0010 1010 0011 1111 — это одно и то же число с разным количеством видимой структуры, и какой из них нужен, зависит от того, нужен читателю значение или раскладка по байтам.

Разобранные примеры

  1. Перевод 2A3F

    1. Берём знаки по одному: 2, A, 3, F
    2. Заменяем каждый его четырьмя битами: 2 — это 0010, A — 1010, 3 — 0011, F — 1111
    3. Соединяем четыре группы без промежутков: 10101000111111
    4. Разрезаем те же знаки по четыре и дополняем первую группу: 0010 1010 0011 1111

    Пример по умолчанию, и в нём видно дополнение нулями. Две строки ответа разной длины — четырнадцать знаков против шестнадцати, не считая трёх пробелов между группами, — и это ожидаемо: первая строка это число, вторая это то же число с видимыми границами знаков. Заметим ещё, что A и F здесь подставляются, а не вычисляются: арифметики нет ни в одном из этих шагов.

  2. Один байт — B2

    1. B — это 11, то есть 1011 в четырёх битах
    2. 2 — это 0010 в четырёх битах
    3. Соединяем: 10110010 — восемь знаков, две группы, один байт

    Два шестнадцатеричных знака — это всегда восемь бит, то есть один байт, и именно поэтому пару стоит знать: ширина значения читается сразу, без всякого счёта. Границы групп здесь к тому же удачно ложатся на байт, но это свойство двух знаков, а не этого конкретного значения.

  3. Строчный ввод — 2a3f

    1. Строчная a значит столько же, сколько прописная A: обе — десять
    2. Строчная f значит столько же, сколько прописная F: обе — пятнадцать
    3. Перевод идёт ровно так же, как для 2A3F, и даёт тот же ответ

    Обе строки выходят слово в слово такими же, как в первом примере. Шестнадцатеричные строки, скопированные со страницы, из таблицы стилей или из журнала, обычно строчные, поэтому принимать любой регистр — не удобство: отказ от строчных сделал бы страницу непригодной ровно на том вводе, с которым к ней и приходят.

  4. Самый большой ввод — 1FFFFFFFFFFFFF

    1. Четырнадцать знаков, значит после дополнения первой группы ответ занимает пятьдесят шесть бит
    2. Ведущая 1 в четырёхбитной группе — это 0001, и именно здесь видно дополнение
    3. Тринадцать знаков F — это тринадцать раз по 1111, поэтому дополненный ответ читается как пятьдесят три единицы, перед которыми стоят три нуля
    4. Без дополнения само число — это пятьдесят три единицы

    Потолок и самый наглядный случай правила дополнения: первая группа здесь 0001, а не 1, поэтому в строке с группами три ведущих нуля, которых в сплошной строке нет. Тот же предел стоит на десятичных страницах как 9 007 199 254 740 991, а на страницах чтения как пятьдесят три цифры: это одна граница, записанная в трёх основаниях.

Ограничения

Страница переводит только целые числа, а на входе здесь шестнадцатеричная строка, а не десятичная, поэтому десятичной запятой, которую надо было бы отклонять, нет: отклоняются знаки за пределами 0–9 и A–F. Ввод может состоять не более чем из четырнадцати шестнадцатеричных знаков, то есть из 1FFFFFFFFFFFFF, и более длинная строка отклоняется с сообщением, а не усекается — усечённый ответ выглядел бы ответом. Ведущие нули принимаются и ничего не меняют; ведущий минус принимается, и тогда дополнение применяется к знакам до того, как присоединён знак, поэтому строка с группами читается как минус 0010, а не как минус 1010 со знаком посередине. Ответ всегда печатается прописными независимо от того, как записан ввод. Таблица ниже разворачивает значение по умолчанию 2A3F и не следует за тем, что вы ввели. Обратный перевод, из двоичной в шестнадцатеричную, — отдельная страница, и арифметики над результатом здесь нет. Обе строки панели печатаются в машинной записи, знак в знак: разделителей разрядов в них нет вовсе, а пробелы в строке с группами — это границы по четыре бита, а не разряды. Сама строка с группами длиннее сплошной на два знака: её верхняя группа дополнена нулями до четырёх, и в 2A3F таких нулей два.

Частые вопросы

Почему одна шестнадцатеричная цифра — это всегда четыре двоичных бита?
Потому что и четыре, и шестнадцать — степени двойки, а шестнадцать — это четыре двойки, перемноженные между собой. Четыре двоичные цифры дают два в четвёртой, то есть шестнадцать различных наборов — ровно столько, сколько знаков может предложить основание шестнадцать. Поэтому два набора совпадают идеально: у каждого знака есть один четырёхбитный набор, а у каждого набора — один знак, и ни с одной стороны ничего не остаётся. Именно поэтому используют шестнадцатеричную запись, а не, скажем, десятичную, которая на биты ровно не делится.
Почему ответ с группами длиннее сплошного?
Потому что строка с группами дополнена, а сплошная нет. Сплошная строка — это собственная двоичная запись числа, поэтому ведущие нули в ней отброшены; строка с группами обязана состоять из целого числа четырёхбитных групп, поэтому верхняя группа дополняется нулями. Для 2A3F это даёт два лишних нуля впереди — четырнадцать знаков в одной строке и шестнадцать в другой. Ни одна из них не ошибочна, и значение у них одно. Нужно значение — берите первую; нужно видеть, где проходят границы знаков, — вторую.
Как перевести шестнадцатеричное число в двоичное вручную?
Заменяйте каждый знак его четырьмя битами и соединяйте, идя слева направо. Четыре бита для десяти цифр — это счёт в двоичной записи: 0 — это 0000, 1 — это 0001, 2 — это 0010, и так до 9, то есть до 1001, а затем A — это 1010, B — 1011, C — 1100, D — 1101, E — 1110 и F — 1111. Переносить нечего и накопленную сумму держать не нужно, поэтому знаки можно обрабатывать в любом порядке.
Имеет ли значение, каким регистром набраны буквы?
Нет. 2a3f и 2A3F — одно и то же число, и оба переводятся в 10101000111111. Ответ всегда печатается прописными, и это обычное соглашение для обоих оснований в технических текстах. Строчный ввод стоит принимать потому, что большинство шестнадцатеричных строк, которые люди копируют, — значение цвета из таблицы стилей, хеш, идентификатор из журнала — написаны именно так.
Какое самое большое шестнадцатеричное число здесь можно перевести?
Четырнадцать знаков: потолок — 1FFFFFFFFFFFFF, и он переводится в пятьдесят три единицы. Более длинные строки отклоняются с сообщением, а не укорачиваются, и этот предел не относится только к этой странице — это та же граница, которую десятичные страницы выражают как 9 007 199 254 740 991, а страницы чтения как пятьдесят три цифры. При большей ширине машина уже не удерживает соседние целые числа порознь, поэтому ответу за этой границей нельзя было бы доверять.
Перевод в двоичную — это то же самое, что перевод в десятичную?
Нет, хотя их легко перепутать, потому что обе начинаются с одной и той же строки. Перевод в двоичную — это подстановка: каждый знак становится четырьмя битами, и арифметика не происходит. Перевод в десятичную — это сумма: каждый знак умножается на степень шестнадцати, которую стоит его разряд, — 2A3F это 2×4096 + 10×256 + 3×16 + 15, — и слагаемые складываются. Двоичная страница быстрее, потому что основание здесь степень двойки, а десятичное — нет.

Источники

Похожие калькуляторы