Конвертер из 16-ричной в десятичную
Результат
Десятичное
- Разрядные значения
- 2×4096 + 10×256 + 3×16 + 15
Конвертер из 16-ричной в десятичную переписывает шестнадцатеричное число в десятичную запись, и в отличие от перевода в двоичную это настоящая арифметика. Любое шестнадцатеричное число читается как сумма произведений: каждый знак умножается на степень шестнадцати, которую стоит его разряд, а счёт разрядов начинается с нуля справа. У 2A3F в последней позиции стоит F, значит F весит 15; в следующей позиции стоит 3, и это 3×16; дальше A, то есть 10×256; а впереди 2, то есть 2×4 096. Сложив, получаем 10 815. Ошибаются здесь именно на буквах, и двумя способами. Во-первых, A должна превратиться в 10, а F — в 15 ещё до всякого умножения: если прочитать A как 1, ответ будет выглядеть правдоподобно и будет неверным. Во-вторых, значение буквы умножается на вес разряда, поэтому F в последней позиции — это 15, а F на разряд левее — это 240: буква не количество, а коэффициент. Вторая половина этой страницы — степени шестнадцати, и у них есть форма, которую стоит знать: 1, 16, 256, 4 096, 65 536 и дальше, каждое в шестнадцать раз больше предыдущего. Читать шестнадцатеричное число по этому списку справа налево быстрее, чем считать степени на месте. А поскольку шестнадцать — степень двойки, это ещё и степени двойки, взятые по четыре: 16 — это 2⁴, 256 — 2⁸, 65 536 — 2¹⁶; поэтому каждый разряд, в котором четыре бита, несёт одну степень шестнадцати. Панель печатает рядом с ответом всю сумму, так что результат можно проверить почленно: 2×4 096 + 10×256 + 3×16 + 15 даёт 10 815, и ошибка в любом отдельном знаке проявится как сумма, которая не возвращается к ожидаемому числу. Две строки панели устроены по-разному, и это стоит знать. Десятичная запись — это число, оно прошло локализацию, и разряды в нём разделены неразрывным пробелом: 10 815. А сумма по разрядам — машинная строка, и в ней тот же множитель напечатан без разделителя: 4096.
Степени шестнадцати от самого правого разряда до самого широкого, который может занять допустимый ввод
| Разряд | Степень | Значение |
|---|---|---|
| 13 | 16¹³ | 4503599627370496 |
| 12 | 16¹² | 281474976710656 |
| 11 | 16¹¹ | 17592186044416 |
| 10 | 16¹⁰ | 1099511627776 |
| 9 | 16⁹ | 68719476736 |
| 8 | 16⁸ | 4294967296 |
| 7 | 16⁷ | 268435456 |
| 6 | 16⁶ | 16777216 |
| 5 | 16⁵ | 1048576 |
| 4 | 16⁴ | 65536 |
| 3 | 16³ | 4096 |
| 2 | 16² | 256 |
| 1 | 16¹ | 16 |
| 0 | 16⁰ | 1 |
Четырнадцать строк, от 16⁰ до 16¹³, и длина здесь не произвольна: четырнадцать знаков — самая широкая запись, которую принимает это семейство страниц, поэтому таблица покрывает любой разряд, который может понадобиться ответу, и на этом останавливается. Читать её сверху вниз — значит читать разряды ответа справа налево: последняя строка это самый правый знак, а первая — самый левый. Средний столбец — разряд, записанный степенью, именно на него умножает сумма в панели выше; третий столбец — та же степень, вычисленная, и именно на неё умножают на практике. Эти значения смыкаются со страницами про двоичную систему: 16 — это 2⁴, 256 — 2⁸, а 65 536 — 2¹⁶, потому что один шестнадцатеричный знак вмещает четыре бита. Так что та же таблица отвечает, сколько стоит четырёхбитная группа, когда её читают как число, а не как биты. Она закреплена и не следует за тем, что вы ввели.
Формула
2A3F = 2×16³ + 10×16² + 3×16¹ + 15×16⁰ = 2×4 096 + 10×256 + 3×16 + 15 = 10 815
- 2A3F
- Шестнадцатеричное число для перевода. Регистр букв не важен, поэтому 2a3f и 2A3F — одно и то же значение; ведущий ноль ничего не меняет, а ведущий минус даёт отрицательный результат
- 16ⁿ
- Степень шестнадцати, приписанная разряду, со счётом от нуля у самого правого знака. Самый правый весит 16⁰, то есть 1, следующий — 16¹, то есть 16, и каждый шаг влево снова умножает на шестнадцать
- 2, 10, 3, 15
- Знаки, прочитанные как значения, с уже подставленными буквами: A становится 10, а F — 15 до всякого умножения. Прочитать A как 1 — ошибка, ради предотвращения которой эта строка и существует, и самый частый способ ошибиться в этом переводе
- 2×4 096
- Одно слагаемое суммы: значение знака, умноженное на степень его разряда. Свой вклад даёт каждый знак, включая нулевые, хотя нулевое слагаемое ничего не меняет и в напечатанную сумму просто не попадает
- = 10 815
- Итог слагаемых. Это десятичное число, а не строка знаков в каком-то другом основании, поэтому ответ этой страницы можно сразу использовать в дальнейших вычислениях
- 14 знаков
- Самая широкая допустимая запись ввода, то есть 1FFFFFFFFFFFFF. Четырнадцать знаков — та длина, на которой значение достигает 9 007 199 254 740 991, а за ней машина уже не удерживает соседние целые числа порознь, поэтому более длинный ввод отклоняется, а не переводится
Читать шестнадцатеричное значение как десятичное приходится всякий раз, когда число, записанное для машины, надо сравнить с числом, записанным для человека. У кода цвета три канала по два знака, и понимать, что FF — это 255, а 80 — это 128, означает разницу между подгонкой оттенка на глаз и подгонкой по числу. С размерами та же история: 400 в шестнадцатеричной записи — это 1024, привычный размер страницы, а карта памяти, напечатанная как 0x100000, — это 1 048 576 байт для всякого, кому надо добавить к ней второй участок. Кто сверяет контрольную сумму, сравнивает префикс хеша или переводит маску из технической документации, делает этот перевод, и кто читает серийный номер или идентификатор, оказавшийся шестнадцатеричным, — тоже. В учёбе это задание звучит как перевод из шестнадцатеричной в десятичную, обычно с выписанными степенями, и это ровно та сумма, которую печатает страница: одно слагаемое на знак, с уже подставленными буквами. Это же и тот перевод, к которому стоит прибегнуть, когда шестнадцатеричный ответ другого инструмента надо проверить на здравый смысл: десятичный итог — то единственное число, с которым можно сравнить все остальные.
Разобранные примеры
Чтение 2A3F
- Выписываем степени шестнадцати под четырьмя знаками, справа: 1, 16, 256, 4 096
- Заменяем буквы их значениями: A — это 10, F — это 15
- Умножаем: 2×4 096 — это 8 192, 10×256 — 2 560, 3×16 — 48, 15×1 — 15
- Складываем четыре слагаемых: 8 192 + 2 560 + 48 + 15 = 10 815
Пример по умолчанию, и в нём обе буквы требуют перевода. A — это не 1, а F — не 5: если прочитать строку так, будто буквы это цифры, ответ получится около двух тысяч, и это достаточно далеко от истины, чтобы броситься в глаза. Ошибка тоньше — буква, переведённая правильно, но умноженная не на ту степень.
Целый байт — FF
- Два знака, поэтому разряды весят 16 и 1
- F — это 15, поэтому левый знак даёт 15×16 = 240
- Правый знак даёт 15×1 = 15
- 240 + 15 = 255
Два знака и самое большое значение, которое они вмещают, — поэтому FF это 255, а не 256: диапазон начинается с 00. Эту пару стоит помнить наизусть, она встречается в значениях цвета, в байтовых полях и в любой шестнадцатеричной строке ровно из двух знаков.
Чтение B2
- B — это 11, поэтому левый знак даёт 11×16 = 176
- Правый знак даёт 2
- 176 + 2 = 178
B стоит на единицу выше A, поэтому 11×16, а не 10×16: разница между B как 11 и B как 10 — это шестнадцать, то есть целый шестнадцатеричный разряд. Это то же значение, которое страницы про двоичную систему используют как пример восьми бит, и в двоичной записи оно выглядит как 10110010.
Самый большой ввод — 1FFFFFFFFFFFFF
- Четырнадцать знаков, поэтому разряды идут от 16¹³ вниз до 16⁰
- Ведущая 1 весит 16¹³, то есть 4 503 599 627 370 496
- Каждый из тринадцати знаков F — это 15, умноженное на степень его собственного разряда
- Сложение четырнадцати слагаемых даёт 9 007 199 254 740 991
Четырнадцать слагаемых — самая широкая сумма, до которой эта страница доходит, и это тот же потолок, в который упираются десятичные страницы на 9 007 199 254 740 991, а страницы про двоичную систему — на пятидесяти трёх цифрах. В методе при таком размере ничего не меняется: это то же умножение со сложением, повторённое четырнадцать раз, и это и есть полезное, что отсюда стоит вынести.
Ограничения
На входе здесь шестнадцатеричная строка, а не десятичная, поэтому десятичной запятой, которую надо было бы отклонять, нет: отклоняются знаки за пределами 0–9 и A–F. Ввод может состоять не более чем из четырнадцати знаков, то есть из 1FFFFFFFFFFFFF, и всё, что длиннее, отклоняется с сообщением, а не усекается. Ведущие нули принимаются и ничего не меняют, а ведущий минус даёт отрицательный десятичный результат: сумма считается по знакам, а знак применяется к итогу. Регистр ввода значения не имеет, но сумма по разрядам всегда печатается прописными буквами. Таблица ниже перечисляет степени шестнадцати от 16⁰ до 16¹³ и закреплена, поэтому за тем, что вы ввели, она не следует; она нужна, чтобы можно было посмотреть вес любого разряда. Обратный перевод, из десятичной в шестнадцатеричную, — отдельная страница, и никакой арифметики над результатом, кроме напечатанной суммы, здесь нет. Две строки панели устроены по-разному. Десятичный ответ — это число, и разряды в нём разделены неразрывным пробелом: панель показывает 10 815, а не 10815. Если это число понадобится ввести в поле другой страницы, например на странице перевода из десятичной в шестнадцатеричную, набирайте его без разделителей. Сумма по разрядам, наоборот, машинная строка, и разделителей в ней нет вовсе: 2×4096 + 10×256 + 3×16 + 15.
Частые вопросы
- Как перевести шестнадцатеричное число в десятичное вручную?
- Выпишите степени шестнадцати под знаками, начиная с 1 справа и умножая на шестнадцать на каждом шаге влево, затем умножьте каждый знак на стоящую под ним степень и сложите результаты. Буквы надо заменить заранее: A — 10, B — 11, C — 12, D — 13, E — 14, F — 15. Для 2A3F это даёт 2×4 096 + 10×256 + 3×16 + 15, то есть 10 815.
- Что означают буквы от A до F?
- Это значения от десяти до пятнадцати, по порядку: A — 10, B — 11, C — 12, D — 13, E — 14, F — 15. Основанию шестнадцать нужно шестнадцать одиночных знаков, а десятичные цифры дают только десять, поэтому нужны ещё шесть символов, и буквы — принятое соглашение. Каждая буква — коэффициент ровно так же, как цифра, поэтому F весит пятнадцать раз по столько, сколько несёт её разряд: пятнадцать в последней позиции и 240 на позицию левее.
- Какое самое большое шестнадцатеричное число здесь можно перевести?
- Четырнадцать знаков. Потолок — 1FFFFFFFFFFFFF, и он переводится в 9 007 199 254 740 991, то есть в ту же границу, которую десятичные страницы называют пятьюдесятью тремя двоичными цифрами. Более длинная строка отклоняется с сообщением, а не усекается и не округляется, потому что за этой шириной машина не удерживает соседние целые числа порознь и ответу нельзя было бы доверять.
- Почему FF равно 255, а не 256?
- Потому что счёт начинается с 00, а не с 01. Два шестнадцатеричных знака дают 256 различных строк, от 00 до FF, поэтому самое большое значение, которое они могут изобразить, — 255, на единицу меньше числа возможностей. Та же ошибка на единицу вылезает и в двоичной записи, где восемь бит идут от 0 до 255, и поэтому максимум байта равен 255 в любом языке, где есть байты.
- Перевод в десятичную — это то же самое, что перевод в двоичную?
- Нет. Перевод в двоичную — это подстановка, не требующая арифметики: каждый знак становится четырьмя битами, и в этом весь метод. Перевод в десятичную — это взвешенная сумма, потому что разряды весят степени шестнадцати, а не степени двойки: 2A3F это 2×4 096 + 10×256 + 3×16 + 15, и буквы надо превратить в значения до всякого умножения. Двоичный результат той же строки — 10101000111111, и оба ответа — одна и та же величина, записанная двумя способами.
- Почему страница печатает степени шестнадцати таблицей?
- Потому что степени — это веса, на которые умножается каждое слагаемое суммы, и посмотреть их в таблице быстрее, чем считать на месте. Таблица идёт от 16⁰ до 16¹³ и для этой страницы исчерпывающая: четырнадцать знаков — самая широкая допустимая запись ввода, поэтому ни один допустимый ответ не использует разряд, которого в таблице нет. Читая её рядом с суммой в панели результатов, видно, какой вес принадлежит какому знаку.
Источники
- Hexadecimal — base sixteen, the letters A to F as the values ten to fifteen, and conversion to and from decimal — Wolfram MathWorld (United States)
- Number base — why a numeral's value depends on its position and on the base, and how the same quantity is written in several bases — Wolfram MathWorld (United States)
- Powers of two — the sequence that the powers of sixteen are every fourth term of, catalogued as OEIS A000079 — OEIS Foundation Inc. (United States)