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

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

Результат

B2

Шестнадцатеричное

Сгруппировано по четыре
1011 0010

Конвертер из двоичной системы в 16-ричную переписывает число из основания два в основание шестнадцать. Это самый простой перевод в этом семействе, потому что вычислять здесь нечего: одна 16-ричная цифра вмещает ровно четыре двоичные, поэтому вся работа состоит в том, чтобы разрезать двоичную строку на группы по четыре справа и прочитать каждую группу как одну цифру. Число 10110010 распадается на 1011 и 0010, это B и 2, значит ответ B2. Именно это жёсткое отношение четыре к одному и есть причина, по которой 16-ричная система вообще существует: байт — это восемь битов, то есть ровно две 16-ричные цифры, а 16-битный адрес — ровно четыре, и потому машинный код, значения цвета и адреса памяти программисты записывают в этом основании, а не в двоичном. Страница печатает использованное разбиение под ответом, потому что разбиение и есть перевод. Если число цифр не кратно четырём, левую группу дополняют нулями до четырёх: 10110 превращается в 0001 0110, то есть в 16. Эти нули не меняют значение, они меняют только разбиение. Обе строки панели — машинные записи, и это стоит заметить сразу. Строка 16-ричного ответа и строка разбиения печатаются ровно теми символами, какими их считает программа: буквы в ответе всегда заглавные, разряды внутри группы не разделяются ничем, а группы разделены обычным пробелом. Ни одна из этих двух строк не проходит через локализацию, и разделителей разрядов, принятых в русской записи чисел, в них нет. Практическое следствие одно: перенося ответ в другое поле, набирайте его подряд, без пробелов и разделителей, — поля ввода в этом семействе разделителей не принимают. Ввод принимается длиной до 53 двоичных цифр, то есть до 9 007 199 254 740 991 — это 16 цифр в десятичной записи и 14 в 16-ричной. За этой границей машина перестаёт различать соседние целые числа, и слишком длинный ввод отклоняется, а не округляется.

Все шестнадцать четырёхбитных групп и 16-ричная цифра, которую каждая из них обозначает

Полубайт16-ричная цифраДесятичное
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
1010A10
1011B11
1100C12
1101D13
1110E14
1111F15

Это весь перевод, выписанный целиком. Каждая четырёхбитная группа, какая только бывает, встречается здесь ровно один раз, поэтому в момент использования вычислять уже нечего: таблица замкнута, и читатель, просмотревший её однажды, прочитает любую двоичную строку в этом основании, разрезав её на четвёрки и отыскав каждую часть. Она постоянна, а не выводится из ввода наверху, поэтому не меняется вместе с числом, и расхождение между ними не противоречие: панель отвечает про набранное, таблица — про общий вопрос о том, каковы эти шестнадцать групп. Читайте средний столбец сверху вниз, и он считает от 0 до F без пропусков, в чём и смысл: буквы здесь не код, а продолжение цифр после девяти. Читайте первый столбец сверху вниз, и он точно так же считает вверх в двоичной записи, что и делает соответствие механическим. Заканчивается таблица на 1111 потому, что там заканчивается одна 16-ричная цифра: следующее значение требует второй цифры, а это и есть перегруппировка, которую страница выше уже делает.

Формула

10110010 = 1011 0010 = B2

двоичное число
Число, которое предстоит переписать, записанное по основанию два. От самого перевода в нём не меняется ничего: то же значение просто записывается другим набором цифр
полубайт
Одна группа из четырёх двоичных цифр. Это единица, в которой работает весь перевод, и возможных полубайтов ровно шестнадцать — ровно поэтому с двоичной системой сочетается именно основание шестнадцать
0-9, A-F
Шестнадцать 16-ричных цифр, по одной на полубайт. Десять из них — привычные цифры, а остальные шесть — буквы от A до F, обозначающие десять, одиннадцать и так до пятнадцати
дополнение нулями
Нули, дописанные слева к первой группе, когда число цифр не кратно четырём. Они меняют разбиение и никогда не меняют значение, поэтому 10110 и 00010110 — две записи одного и того же числа
справа налево
Направление, в котором идёт разрезание. Группы образуются от правого конца, потому что именно там находится разряд единиц, — точно так же, как в десятичном числе отделяют тысячи
53 бита
Какой длины может быть ввод: 53 двоичные цифры, то есть до 9 007 199 254 740 991, а на другом конце это 14 16-ричных цифр. Это та ширина, на которой машина перестаёт различать соседние целые числа, поэтому более длинный ввод отклоняется, а не округляется

Этот перевод люди выполняют чаще всего, не считая его переводом. Прочитать байт в отладчике, проверить значение цвета, посчитать маску подсети, разобрать префикс хеша, прочитать дамп регистров устройства или сравнить два флага в журнале — во всех этих случаях истиной являются биты, а 16-ричная запись — та форма, в которой их печатают, и переход между этими двумя взглядами постоянен в низкоуровневой работе. Направление важно в обе стороны: в документации на микросхему регистр задан 16-ричным значением, и нужный бит находится его развёртыванием, а осциллограмма или вопрос про картину битов приходит в двоичной записи и должен быть записан в той форме, которую использует документация. Школьники встречают это как приём, делающий длинные двоичные числа обозримыми: шестнадцать двоичных цифр нечитаемы, а четыре 16-ричные — читаемы, и знание того, что отношение здесь четыре к одному, а не что-то, что надо вычислять, убирает из задачи арифметику целиком. Страница печатает разбиение, чтобы этот приём был виден, а не заявлен, — именно поэтому её можно использовать и как проверку перевода, сделанного вручную, и как замену ему.

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

  1. Переписываем 10110010

    1. Разрежьте строку на группы по четыре, начиная справа: 1011 и 0010
    2. Прочитайте первую группу: 1011 — это 8 + 2 + 1 = 11, то есть B
    3. Прочитайте вторую группу: 0010 — это 2, то есть 2
    4. Две цифры вместе дают B2

    Значение по умолчанию, и это байт, поэтому разбиение выходит ровным. B2 — та форма, в которой это значение встретится в отладчике или в описании микросхемы; восемь битов по-прежнему лежат под ней, и потому разбиение печатается рядом с ответом, а не остаётся подразумеваемым.

  2. Один полубайт, 1111

    1. Четыре цифры — это уже ровно одна группа
    2. 1111 — это 8 + 4 + 2 + 1 = 15
    3. Пятнадцать записывается в 16-ричной системе как F
    4. Ответ — одна цифра, F

    Самый большой полубайт и пример, показывающий, почему буквы заканчиваются именно здесь: пятнадцать — наибольшее значение, которое вмещают четыре бита, поэтому F и есть последняя цифра в этом основании. Ничего более широкого одной 16-ричной цифрой не записать, и именно это свойство здесь и используется.

  3. Дополняем короткий ввод, 10110

    1. Пять цифр на четвёрки не делятся, поэтому начинайте справа: 0110 — это одна полная группа
    2. Слева остаётся одна цифра, дополните её до четырёх: 0001
    3. 0001 — это 1, а 0110 — это 6, вместе получаются две цифры 16
    4. Показанное разбиение — 0001 0110, и оно на две цифры длиннее ввода

    Тот случай, который выглядит ошибкой и ею не является. Выходное разбиение длиннее ввода, потому что 16-ричная цифра шириной в четыре бита, а последнюю группу надо до этой ширины заполнить. 10110 и 00010110 — одно и то же число, и именно дополнение делает вторую цифру читаемой: без него оставшейся одиночной цифре нечем было бы быть.

  4. Отрицательное значение, -10110

    1. Знак минус стоит снаружи числа, поэтому отложите его и переведите 10110
    2. 10110 перегруппировывается в 0001 0110, что читается как 16
    3. Верните знак в оба чтения: -16

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

Ограничения

Эта страница переписывает только целые двоичные числа. Двоичной точки здесь нет, поэтому дробный ввод отклоняется, а не переводится, и 16-ричная дробь не выдаётся. Длина ввода — не более 53 двоичных цифр, то есть до 9 007 199 254 740 991, а на другом конце это 14 16-ричных цифр; более длинные значения машина не удержит точно, и они отклоняются, а не приближаются. Ведущие нули во вводе принимаются и игнорируются, но нули, добавленные при разбиении, показываются намеренно: дополненный вывод шире своего ввода специально, и это не ошибка. Знак минус перед числом принимается и переносится в оба вывода. Только целые числа, поэтому это чтение, а не арифметика: сложение, вычитание, умножение и деление в любом из оснований — на страницах калькуляторов по ссылкам ниже, а обратный переход, из 16-ричной записи обратно в двоичную, — на отдельной странице.

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

Почему вывод длиннее того, что я набрал?
Потому что 16-ричная цифра ровно четыре бита шириной, и левую группу приходится заполнять до этой ширины. Ввод из пяти цифр, например 10110, — это одна полная группа (0110) плюс оставшаяся цифра, и остаток дополняется слева до 0001. Нули не меняют значение — 10110 и 00010110 одно и то же число, — и именно дополнение даёт последней группе то, чем ей быть. Без него оставшейся одиночной цифре не с чем было бы соотноситься в таблице.
Есть ли в этом переводе арифметика?
Нет, и это и есть интересное. Поскольку шестнадцать — степень двойки, граница между основаниями приходится ровно на каждые четыре двоичные цифры, поэтому перевод оказывается перегруппировкой, а не вычислением. Ничего не умножается, ничего не складывается и ничего не переносится: цифры разрезаются на четвёрки, и каждая группа находится в таблице. Именно поэтому вместо какой-нибудь другой компактной записи используется 16-ричная, и поэтому же разбиение печатается рядом с ответом: разбиение и есть метод, показанный, а не описанный.
Почему одна 16-ричная цифра равна четырём битам, а не трём или пяти?
Потому что четыре бита вмещают ровно шестнадцать различных значений, а у 16-ричной цифры ровно шестнадцать различных символов. Три бита дали бы только восемь значений — поэтому с тройкой сочетается восьмеричная система, — а пять битов дали бы тридцать два, чего не использует ни одно распространённое основание. Совпадение должно быть точным, чтобы перегруппировка работала без переносов, а точным оно бывает только у степеней двойки. По той же причине байт, то есть восемь битов, — это всегда ровно две 16-ричные цифры.
Какое самое длинное двоичное число здесь можно перевести?
53 цифры, то есть до 9 007 199 254 740 991 в десятичной записи, а после перевода — 14 16-ричных цифр. Потолок этот — свойство того, как машина хранит числа точно, а не правило, выбранное этой страницей: за этой шириной соседние целые перестают различаться, поэтому более длинный ввод нельзя перевести достоверно. Он отклоняется с сообщением, а не округляется, и это важно, потому что округлённый ответ выглядел бы здесь как самое обычное 16-ричное значение.
Можно ли перевести дробное двоичное число?
На этой странице — нет. Двоичная точка не принимается, и 16-ричная дробь не выдаётся, потому что дробный перевод требует отдельного решения о том, сколько знаков оставлять и как округлять последний. Каждая страница этой группы работает с целыми числами, поэтому один и тот же ввод никогда не принимается в одном месте и не отклоняется в другом. Внутри этой границы перевод точен: любое целое двоичное число в пределах ограничения длины отображается ровно в одно 16-ричное значение, без округления где бы то ни было.
Имеет ли значение регистр букв в ответе?
Ответ всегда печатается заглавными — B2, а не b2, — но это одно и то же значение, и понимают обе записи везде. В документации, дизассемблерах и описаниях микросхем почти всегда используют заглавные, а значения цвета в CSS по традиции пишут строчными, поэтому читатель, пришедший с любой стороны, узнает то, что видит. Эта страница печатает заглавные для единообразия с остальными страницами семейства и потому, что такова традиция в тех материалах, рядом с которыми её обычно и используют.

Источники

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