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

Как перевести число в шестнадцатеричную систему счисления

  • автор:

Урок 32. Перевод чисел между системами счисления

При программировании мы часто сталкиваемся с необходимостью перевода чисел между системами счисления, по основанию: 2, 4, 8, 16 и 10.

Основание системы счисления указывает какое количество цифр используется в этой системе для написания чисел:

  • Привычная нам система счисления по основанию 10 (десятичная система счисления) использует 10 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. После 9 идёт не цифра, а число 10, состоящее из двух цифр: 1 и 0. Таким образом, мы записываем любые числа, используя указанные цифры в определённой последовательности.
  • Система счисления по основанию 2 (двоичная система счисления) использует 2 цифры: 0, 1.
  • Система счисления по основанию 4 (четверичная система счисления) использует 4 цифры: 0, 1, 2, 3.
  • Система счисления по основанию 8 (восьмеричная система счисления) использует 8 цифр: 0, 1, 2, 3, 4, 5, 6, 7.
  • Система счисления по основанию 16 (шестнадцатеричная система счисления) использует 16 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. В данном случае, буквы ABCDEF являются цифрами. Цифра A шестнадцатеричной системы, равна числу 10 десятичной системы, цифра B равна числу 11 десятичной системы, . , цифра F равна числу 15 десятичной системы.

Можно использовать любую систему счисления, например по основанию 12 (счет дюжинами), но наиболее популярными при программировании, являются: десятичная, шестнадцатеричная и двоичная, системы счисления.

Все выше перечисленные системы счисления относятся к позиционным системам. Значение числа зависит не только от того из каких цифр оно состоит, но и в какой последовательности они записаны. Например число 1234 не равно числу 4321.

Методы представления чисел в разных системах счисления:

  • двоичная система счисления:
    • (10101)2 — математическое представление (число)основание системы
    • 0b10101 — представление в скетчах Arduino IDE (число записывается с ведущими символами «0b»).
    • B10101 — представление в скетчах Arduino IDE (число до 256 записывается с ведущим символом «B»).
    • (10101)8 — математическое представление (число)основание системы
    • 010101 — представление в скетчах Arduino IDE (число записывается с ведущим символом «0» ноль).
    • (10101)10 — математическое представление (число)основание системы
    • 10101 — представление в скетчах Arduino IDE (число записывается как есть без ведущих символов)
    • (10101)16 — математическое представление (число)основание системы
    • 0x10101 — представление в скетчах Arduino IDE (число записывается с ведущими символами «0x»).
    Перевод чисел в десятичную систему счисления:

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

    Σ(цифра_числа * основание_системы позиция_цифры )

    Примеры перевода чисел в десятичную систему счисления:

    Перевод чисел из десятичной системы счисления:

    Для перевода чисел из десятичной системы счисления в любую другую, необходимо целочисленно делить переводимое число на основание той системы, в которую мы хотим его перевести, до тех пор пока результат целочисленного деления не станет равен 0. Результатом перевода будут цифры остатка от каждого деления, в обратном порядке.

    Примеры перевода чисел из десятичной системы счисления:

    • (43)10 перевести в двоичную систему счисления:
      • 43/2 = 21 и 1 в остатке
      • 21/2 = 10 и 1 в остатке
      • 10/2 = 5 и 0 в остатке
      • 5/2 = 2 и 1 в остатке
      • 2/2 = 1 и 0 в остатке
      • 1/2 = 0 и 1 в остатке
      • результат — цифры остатков в обратном порядке = (101011)2
      • 751/8 = 93 и 7 в остатке
      • 93/8 = 11 и 5 в остатке
      • 11/8 = 1 и 3 в остатке
      • 1/8 = 0 и 1 в остатке
      • результат — цифры остатков в обратном порядке = (1357)8
      • 15305/16 = 956 и 9 в остатке
      • 956/16 = 59 и 12 в остатке — соответствует цифре (C)16
      • 59/16 = 3 и 11 в остатке — соответствует цифре (B)16
      • 3/16 = 0 и 3 в остатке
      • результат — цифры остатков в обратном порядке = (3BC9)16
      Простой метод перевода:

      Легче всего переводить числа через двоичную систему счисления. О том как это сделать рассказано в нашем видеоуроке.

      ПЕРЕВОД ЧИСЕЛ ИЗ ДЕСЯТИЧНОЙ СИСТЕМЫ В ШЕСТНАДЦАТЕРИЧНУЮ

      Для перевода чисел из десятичной системы счисления в шестнадцатеричную используют тот же «алгоритм замещения», что и при переводе из десятичной системы счисления в двоичную и восьмеричную, только в качестве делителя используют 16, основание шестнадцатеричной системы счисления:

      1. Делим десятичное число А на 16. Частное Q запоминаем для следующего шага, а остаток a записываем как младший бит шестнадцатеричного числа.
      2. Если частное q не равно 0, принимаем его за новое делимое и повторяем процедуру, описанную в шаге 1. Каждый новый остаток записывается в разряды шестнадцатеричного числа в направлении от младшего бита к старшему.
      3. Алгоритм продолжается до тех пор, пока в результате выполнения шагов 1 и 2 не получится частное Q = 0 и остаток a меньше 16.

      Например, требуется перевести десятичное число 32767 в шестнадцатеричное. В соответствии с приведенным алгоритмом получим:

      3276710 : 16 = 204710
      32767103275210 = 15, остаток 15 в виде F записываем в МБ шестнадцатеричного числа.
      204710 : 16 = 12710
      204710203210 = 15, остаток 15 в виде F записываем в следующий после МБ разряд шестнадцатеричного числа.
      12710 : 16 = 710
      1271011210 = 15, остаток 15 в виде F записываем в старший разряд шестнадцатеричного числа.
      710 : 16 = 010, остаток 7 записываем в старший разряд шестнадцатеричного числа.

      Таким образом, искомое шестнадцатеричное число равно 7FFF16.

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

      Перед тем как перейти к алгоритму перевода, вспомним алфавит шестнадцатеричной и десятичной системы счисления:

      Для перевода чисел из десятичной системы в шестнадцатеричную, воспользуемся соответствующим алгоритмом. Важно заметить, что алгоритм перевода целых и дробных чисел будет отличаться.

      Алгоритм перевода целых десятичных чисел в шестнадцатеричную систему счисления

      1. Последовательно выполнять деление десятичного числа и получаемых целых частных на 16, до тех пор, пока частное не станет равным 0.
      2. Для получения ответа в шестнадцатеричном коде, необходимо записать, полученные, в результате деления остатки, в обратном порядке.

      Пример 1 : перевести десятичное число 12349 в шестнадцатеричную систему счисления

      Для наглядности произведем деление «столбиком». Решение будет выглядеть следующим образом:

      Исходя из вышеприведенного алгоритма, полученные остатки необходимо записать в обратном порядке.

      Алгоритм перевода десятичной дроби в шестнадцатеричную систему

      1. Последовательно выполнять умножение исходной дроби на 16, до тех пор, пока, дробная часть не станет равна 0 или пока не будет достигнута необходимая точность вычисления.
      2. Полученная дробь в шестнадцатеричной системе будет равна прямой последовательности целых частей произведений.

      Пример 2: перевести число 0,7715 в шестнадцатеричную систему.

      Решение будет выглядеть следующим образом:

      0.7715 ∙ 16 = 12.344 (C)
      0.344 ∙ 16 = 5.504 (5)
      0.504 ∙ 16 = 8.064 (8)
      0.064 ∙ 16 = 1.024 (1)
      0.024 ∙ 16 = 0.384 (0)
      0.384 ∙ 16 = 6.144 (6)
      0.144 ∙ 16 = 2.304 (2)
      0.304 ∙ 16 = 4.864 (4)
      0.864 ∙ 16 = 13.824 (D)
      0.824 ∙ 16 = 13.184 (D)
      0.184 ∙ 16 = 2.944 (2)

      В данном примере можно продолжить вычисления, но зачастую, такой точности будет достаточно.

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

      Для того чтобы перевести десятичное число, содержащее дробную часть, необходимо отдельно перевести целую часть и отдельно дробную.

      Пример 3: перевести число 10415,136 из десятичной системы в шестнадцатеричную

      Для решения примера потребуется отдельно перевести 10415 и отдельно 0,136 из десятичной системы в шестнадцатеричную, используя вышеизложенные алгоритмы. Таким образом переведя 10415, получим:

      Перевод десятичной дроби 0,136 выглядит так:

      0.136 ∙ 16 = 2.176 (2)
      0.176 ∙ 16 = 2.816 (2)
      0.816 ∙ 16 = 13.056 (D)
      0.056 ∙ 16 = 0.896 (0)
      0.896 ∙ 16 = 14.336 (E)
      0.336 ∙ 16 = 5.376 (5)
      0.376 ∙ 16 = 6.016 (6)
      0.016 ∙ 16 = 0.256 (0)
      0.256 ∙ 16 = 4.096 (4)
      0.096 ∙ 16 = 1.536 (1)
      0.536 ∙ 16 = 8.576 (8)

      Теперь осталось соединить результаты перевода. Таким образом: 10415.13610=28AF.22D0E56041816

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

      Решение получаем через калькулятор. Переводим целую часть числа ( 56 ).

      Остаток от деления записываем в обратном порядке. Получаем число в 16-ой системе счисления: 038
      56 = 03816

      Для перевода дробной части числа последовательно умножаем дробную часть на основание 16. В результате каждый раз записываем целую часть произведения.
      0.567*16 = 9.072 (целая часть 9 )
      0.072*16 = 1.152 (целая часть 1 )
      0.152*16 = 2.432 (целая часть 2 )
      0.432*16 = 6.912 (целая часть 6 )
      Получаем число в 16-ой системе счисления: 9126
      0.567 = 912616

      Таким образом, число 56,567 в шестнадцатеричной системе счисления записывается как 38,9126.

      Пример 2 . Перевести число 0101110,011 в шестнадцатеричное представление.
      Переводим целую часть числа. Для этого разделим исходный код на группы по 4 разряда.
      01011102 = 0010 1110 2
      Затем заменяем каждую группу на код из таблицы.

      Двоичная СС Шестнадцатеричная СС
      0000 0
      0001 1
      0010 2
      0011 3
      0100 4
      0101 5
      0110 6
      0111 7
      1000 8
      1001 9
      1010 A
      1011 B
      1100 C
      1101 D
      1110 E
      1111 F

      Получаем число: 0010 1110 2 = 2E16

      Переводим дробную часть числа. Для этого разделим исходный код на группы по 4 разряда.
      0112 = 01102
      Затем заменяем каждую группу на код из таблицы.
      Получаем число: 01102 = 616

      Пример 3 . Перевести число 456,548 в шестнадцатеричное представление.
      Переводим целую часть числа. Заменяем каждый разряд на код из таблицы.

      Двоичная СС Восьмеричная СС
      000 0
      001 1
      010 2
      011 3
      100 4
      101 5
      110 6
      111 7

      Получаем число: 4568 = 1001011102

      Переводим дробную часть числа.
      Получаем число: 548 = 1011002
      Переводим целую часть числа. Для этого разделим исходный код на группы по 4 разряда.
      1001011102 = 0001 0010 1110 2
      Затем заменяем каждую группу на код из таблицы.
      Получаем число: 0001 0010 1110 2 = 12E16

      Переводим дробную часть числа. Для этого разделим исходный код на группы по 4 разряда.
      1011002 = 1011 00002
      Затем заменяем каждую группу на код из таблицы.
      Получаем число: 1011 00002 = B016

      Профессии будущего

      РБК Тренды изучили прогнозы российских и зарубежных футурологов, и составили список самых востребованных профессий в ближайшие 30 лет. Это профессии из 19 отраслей: от медицины и транспорта до культуры и космоса

      Налоговый вычет на обучение

      √ 120 тыс. руб. — максимальная сумма расходов на обучение
      √ вычет от государства
      √ вычет от работодателя

      Требуются авторы студенческих работ!

      • регулярный поток заказов;
      • стабильный доход

      • Задать вопрос или оставить комментарий
      • Помощь в решении
      • Поиск
      • Поддержать проект

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *