Открыть сервисСервис

Перевод чисел из шестнадцатеричной в десятичную систему счисления

Перевод чисел из шестнадцатеричной в десятичную систему счисления — это математическая операция приведения числа, записанного в позиционной шестнадцатеричной системе счисления (основание 16), к его эквиваленту в десятичной системе (основание 10). Шестнадцатеричная система широко применяется в информатике для записи машинных кодов, адресов памяти, цветовых значений и байтовых данных, поэтому перевод между этими системами является одной из базовых операций при работе с низкоуровневыми данными.

Основы позиционных систем счисления

В позиционной системе счисления значение числа определяется не только цифрами, но и их позициями. Каждая цифра в числе умножается на основание системы в степени, соответствующей её порядковому номеру, отсчитываемому справа налево, начиная с нуля.

В десятичной системе основание равно 10 и используются цифры от 0 до 9. В шестнадцатеричной системе (сокращённо hex, обозначение 0x или префикс 16#) основание равно 16, поэтому помимо цифр 0–9 используются латинские буквы A, B, C, D, E и F, соответствующие значениям от 10 до 15. Запись шестнадцатеричного числа может выглядеть как 0x1A3F, 1A3F₁₆ или 16#1A3F#.

Формула перевода

Перевод из шестнадцатеричной системы в десятичную выполняется по общей формуле позиционного разложения. Если шестнадцатеричное число состоит из цифр dₙ dₙ₋₁ … d₁ d₀, то его десятичное значение вычисляется как:

D = dₙ × 16ⁿ + dₙ₋₁ × 16ⁿ⁻¹ + … + d₁ × 16¹ + d₀ × 16⁰

Здесь каждая буквенная цифра предварительно заменяется её числовым эквивалентом: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.

Пошаговый пример

Рассмотрим перевод числа 1A3F₁₆ в десятичную систему.

  1. Записываем цифры числа и определяем их позиции (нумерация с нуля справа налево): 1 (позиция 3), A (позиция 2), 3 (позиция 1), F (позиция 0).
  2. Заменяем буквы числовыми значениями: A = 10, F = 15. Получаем последовательность 1, 10, 3, 15.
  3. Вычисляем вклад каждой позиции:
  • 1 × 16³ = 1 × 4096 = 4096
  • 10 × 16² = 10 × 256 = 2560
  • 3 × 16¹ = 3 × 16 = 48
  • 15 × 16⁰ = 15 × 1 = 15
  1. Складываем результаты: 4096 + 2560 + 48 + 15 = 4719.

Итак, 1A3F₁₆ = 4719₁₀.

Метод Горнера

Для длинных чисел удобен метод Горнера (последовательного умножения и сложения), который позволяет обойтись без вычисления больших степеней. Алгоритм: берётся начальное значение 0, затем последовательно для каждой цифры слева направо текущее значение умножается на 16 и прибавляется числовое значение очередной цифры.

Для числа 1A3F₁₆:

  • Начальное значение: 0
  • Цифра 1: 0 × 16 + 1 = 1
  • Цифра A (10): 1 × 16 + 10 = 26
  • Цифра 3: 26 × 16 + 3 = 419
  • Цифра F (15): 419 × 16 + 15 = 4719

Результат совпадает: 4719₁₀.

Перевод дробных чисел

Для дробной части шестнадцатеричного числа (записываемой после запятой или точки) используется обратный принцип: каждая цифра после запятой умножается на 16 в отрицательной степени. Так, 0.C8₁₆ переводится как C × 16⁻¹ + 8 × 16⁻² = 12/16 + 8/256 = 0.75 + 0.03125 = 0.78125₁₀.

Автоматические средства перевода

Помимо ручного вычисления, перевод выполняется с помощью встроенных средств операционных систем и языков программирования:

  • Калькулятор Windows в режиме «Программист» позволяет вводить шестнадцатеричные числа и мгновенно видеть десятичное значение.
  • В языке Python функция int('1A3F', 16) преобразует шестнадцатеричную строку в целое десятичное число.
  • В языке JavaScript используется конструкция parseInt('1A3F', 16).
  • В языке C и производных языках шестнадцатеричные константы записываются с префиксом 0x (например, 0x1A3F) и автоматически интерпретируются компилятором как числа.
  • В языке PHP применяется функция hexdec().
  • В оболочке Bash шестнадцатеричные значения можно преобразовать командой $((0x1A3F)).

Обратная задача

Перевод из десятичной системы в шестнадцатеричную выполняется последовательным делением числа на 16 с записью остатков. Остатки читаются снизу вверх и преобразуются: значения от 10 до 15 заменяются буквами A–F. Например, для числа 4719: 4719 ÷ 16 = 294 (остаток 15 → F), 294 ÷ 16 = 18 (остаток 6), 18 ÷ 16 = 1 (остаток 2), 1 ÷ 16 = 0 (остаток 1). Чтение остатков снизу вверх даёт 126F₁₆.

Применение

Шестнадцатеричная запись используется при программировании для задания констант, при отладке программ (отображение содержимого памяти в hex-дампах), в веб-разработке для кодирования цветов (например, #FF5733 обозначает цвет с компонентами R=255, G=87, B=51), в протоколах передачи данных и файловых форматах. Умение быстро переводить между системами счисления необходимо при анализе сетевых протоколов, работе с файловыми структурами и чтении документации на оборудование.

Источники:

  • Кнут Д. «Искусство программирования», том 2: «Получисловые алгоритмы»
  • Бартон Р. С., Флаудер Н. Д. «Числительные системы»
  • Руднев А. П. «Справочник по математике для инженеров и студентов»
  • Документация языков программирования Python, JavaScript и C
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru