Урок 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, основание шестнадцатеричной системы счисления:
- Делим десятичное число А на 16. Частное Q запоминаем для следующего шага, а остаток a записываем как младший бит шестнадцатеричного числа.
- Если частное q не равно 0, принимаем его за новое делимое и повторяем процедуру, описанную в шаге 1. Каждый новый остаток записывается в разряды шестнадцатеричного числа в направлении от младшего бита к старшему.
- Алгоритм продолжается до тех пор, пока в результате выполнения шагов 1 и 2 не получится частное Q = 0 и остаток a меньше 16.
Например, требуется перевести десятичное число 32767 в шестнадцатеричное. В соответствии с приведенным алгоритмом получим:
3276710 : 16 = 204710 3276710 — 3275210 = 15, остаток 15 в виде F записываем в МБ шестнадцатеричного числа. 204710 : 16 = 12710 204710 — 203210 = 15, остаток 15 в виде F записываем в следующий после МБ разряд шестнадцатеричного числа. 12710 : 16 = 710 12710 — 11210 = 15, остаток 15 в виде F записываем в старший разряд шестнадцатеричного числа. 710 : 16 = 010, остаток 7 записываем в старший разряд шестнадцатеричного числа. Таким образом, искомое шестнадцатеричное число равно 7FFF16.
Перевод из десятичной системы в шестнадцатеричную
Перед тем как перейти к алгоритму перевода, вспомним алфавит шестнадцатеричной и десятичной системы счисления:
Для перевода чисел из десятичной системы в шестнадцатеричную, воспользуемся соответствующим алгоритмом. Важно заметить, что алгоритм перевода целых и дробных чисел будет отличаться.
Алгоритм перевода целых десятичных чисел в шестнадцатеричную систему счисления
- Последовательно выполнять деление десятичного числа и получаемых целых частных на 16, до тех пор, пока частное не станет равным 0.
- Для получения ответа в шестнадцатеричном коде, необходимо записать, полученные, в результате деления остатки, в обратном порядке.
Пример 1 : перевести десятичное число 12349 в шестнадцатеричную систему счисления
Для наглядности произведем деление «столбиком». Решение будет выглядеть следующим образом:

Исходя из вышеприведенного алгоритма, полученные остатки необходимо записать в обратном порядке.
Алгоритм перевода десятичной дроби в шестнадцатеричную систему
- Последовательно выполнять умножение исходной дроби на 16, до тех пор, пока, дробная часть не станет равна 0 или пока не будет достигнута необходимая точность вычисления.
- Полученная дробь в шестнадцатеричной системе будет равна прямой последовательности целых частей произведений.
Пример 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 тыс. руб. — максимальная сумма расходов на обучение
√ вычет от государства
√ вычет от работодателяТребуются авторы студенческих работ!
- регулярный поток заказов;
- стабильный доход

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