ПЕРЕВОД ЧИСЕЛ ИЗ ШЕСТНАДЦАТЕРИЧНОЙ СИСТЕМЫ В ДЕСЯТИЧНУЮ
После изучения предыдущего раздела переформулировать алгоритм перевода чисел из шестнадцатеричной в десятичную систему счисления не составляет никакого труда. Помнить следует лишь о том, что для шестнадцатеричной системы счисления основанием является число 16, и правило перевода в данном случае может быть сформулировано в следующем виде:
Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.
Например, требуется перевести шестнадцатеричное число F45ED23C в десятичное. В этом числе 8 цифр и 8 разрядов (помним, что разряды считаются, начиная с нулевого, которому соответствует младший бит). В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:
F45ED23C16 = (15·16 7 )+(4·16 6 )+(5·16 5 )+(14·16 4 )+(13·16 3 )+(2·16 2 )+(3·16 1 )+(12·16 0 ) = 409985490810
Для вычислений «вручную» и решения примеров и контрольных заданий вам могут пригодиться таблицы степеней оснований изучаемых систем счисления (2, 8, 10, 16), приведенные в Приложении.
Перевод из шестнадцатеричной системы в десятичную
Перевести шестнадцатеричное число в десятичное достаточно просто, для этого необходимо воспользоваться формулой. Важное замечание состоит в том, что для перевода целого и дробного шестнадцатеричного числа используются разные, хоть и схожие, формулы.
Таблица соответствия шестнадцатеричных чисел
Перед тем как перейти к алгоритму перевода, вспомним таблицу соответствия десятичных и шестнадцатеричных чисел:
Алгоритм перевода целого шестнадцатеричного числа в десятичную систему счисления
Для перевода целого шестнадцатеричного числа в десятичное, обратимся к развернутой форме записи числа для позиционной системы счисления:
где A — число, q — основание системы счисления, а n — количество разрядов числа.
Зная основание системы счисления (16), выведем формулу перевода:
Пример 1: Перевести число A2F из шестнадцатеричной системы в десятичную
Применив выведенную формулу, получим:
A2F16=A ∙ 16 2 + 2 ∙ 16 1 + F ∙ 16 0 = 10 ∙ 256 + 2 ∙ 16 + 15 ∙ 1 = 2560 + 32 + 15 = 260710
Алгоритм перевода шестнадцатеричной дроби в десятичную систему счисления
Как и в предыдущем случае, для перевода шестнадцатеричной дроби в десятичную систему, воспользуемся развернутой формой представления дробей в позиционных системах:
где A — число, q — основание системы счисления, n — количество целых разрядов, а m — количество дробных разрядов числа. Зная основание системы счисления (16), выведем формулу перевода:
Пример 2: Перевести число 0,2A9 из шестнадцатеричной системы в десятичную
Применив выведенную формулу, получим:
0.2A916=0 ∙ 16 0 + 2 ∙ 16 -1 + A ∙ 16 -2 + 9 ∙ 16 -3 = 0 ∙ 1 + 2 ∙ 0.0625 + 10 ∙ 0.00390625 + 9 ∙ 0.000244140625 = 0 + 0.125 + 0.0390625 + 0.002197265625 = 0.16625976562510
Пример 3: Перевести число 104,F2 из шестнадцатеричной системы в десятичную
104.F216=1 ∙ 16 2 + 0 ∙ 16 1 + 4 ∙ 16 0 + F ∙ 16 -1 + 2 ∙ 16 -2 = 1 ∙ 256 + 0 ∙ 16 + 4 ∙ 1 + 15 ∙ 0.0625 + 2 ∙ 0.00390625 = 256 + 0 + 4 + 0.9375 + 0.0078125 = 260.945312510
Перевод из шестеричной в десятичную систему счисления
Шестеричная система счисления, также известная как шестнадцатеричная, является одной из наиболее распространенных систем, используемых в современных компьютерах. В этой системе используется шестнадцать символов: цифры от 0 до 9 и буквы A, B, C, D, E и F, где A соответствует десятичному числу 10, B – 11, C – 12, D – 13, E – 14 и F – 15.
Перевод чисел из шестеричной системы в десятичную можно осуществить с помощью простого алгоритма. Для начала разбиваем число на отдельные цифры, начиная справа. Затем умножаем каждую цифру на 16 в степени, соответствующей ее позиции (от 0 до n-1), где n – количество цифр в числе. После этого складываем полученные произведения и получаем результат в десятичной системе счисления.
Рассмотрим несколько примеров.
Пример 1: Дано шестеричное число 3B. Чтобы перевести его в десятичную систему, мы разобьем его на цифры: 3 и B. Теперь умножим каждую цифру на 16 в соответствии с ее позицией. Для цифры 3 позиция равна 0, поэтому умножим ее на 16 в степени 0, что даст нам 3. Для цифры B позиция равна 1, поэтому умножим ее на 16 в степени 1, что даст нам 11 * 16^1 = 176. Теперь сложим полученные произведения: 3 + 176 = 179. Таким образом, число 3B в шестеричной системе равно числу 179 в десятичной системе.
Пример 2: Дано шестеричное число F5. По аналогии с предыдущим примером разобьем число на цифры: F и 5. Умножим каждую цифру на 16 в соответствии с ее позицией. Для цифры F позиция равна 0, поэтому умножим ее на 16 в степени 0, что даст нам 15. Для цифры 5 позиция равна 1, поэтому умножим ее на 16 в степени 1, что даст нам 5 * 16^1 = 80. Теперь сложим полученные произведения: 15 + 80 = 95. Таким образом, число F5 в шестеричной системе равно числу 95 в десятичной системе.
Пример 3: Дано шестеричное число A2C. Разобъем его на цифры: A, 2 и C. Умножим каждую цифру на 16 в соответствии с ее позицией. Для цифры A позиция равна 0, поэтому умножим ее на 16 в степени 0, что даст нам 10. Для цифры 2 позиция равна 1, поэтому умножим ее на 16 в степени 1, что даст нам 2 16^1 = 32. Для цифры C позиция равна 2, поэтому умножим ее на 16 в степени 2, что даст нам 12 16^2 = 3072. Теперь сложим полученные произведения: 10 + 32 + 3072 = 3114. Таким образом, число A2C в шестеричной системе равно числу 3114 в десятичной системе.
Таблица перевода шестеричных чисел в десятичные:
| Шестеричное число | Десятичное число |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| A | 10 |
| B | 11 |
| C | 12 |
| D | 13 |
| E | 14 |
| F | 15 |
| 10 | 16 |
| 11 | 17 |
| 12 | 18 |
| 13 | 19 |
| 14 | 20 |
| 15 | 21 |
Теперь вы знаете, как переводить числа из шестеричной системы в десятичную. Этот навык может быть полезен в программировании, компьютерных науках и других областях, где требуется работа с числами и системами счисления.
Перевод чисел в двоичную, шестнадцатеричную, десятичную, восьмеричную системы счисления
Можно вводить как целые числа, например 34 , так и дробные, например, 637.333 . Для дробных чисел указывается точность перевода после запятой.
- Операции с двоичными числами (сложение и вычитание)

Способы представления чисел
Двоичные (binary) числа – каждая цифра означает значение одного бита (0 или 1), старший бит всегда пишется слева, после числа ставится буква «b». Для удобства восприятия тетрады могут быть разделены пробелами. Например, 1010 0101b.
Шестнадцатеричные (hexadecimal) числа – каждая тетрада представляется одним символом 0. 9, А, В, . F. Обозначаться такое представление может по-разному, здесь используется только символ «h» после последней шестнадцатеричной цифры. Например, A5h. В текстах программ это же число может обозначаться и как 0хА5, и как 0A5h, в зависимости от синтаксиса языка программирования. Незначащий ноль (0) добавляется слева от старшей шестнадцатеричной цифры, изображаемой буквой, чтобы различать числа и символические имена.
Десятичные (decimal) числа – каждый байт (слово, двойное слово) представляется обычным числом, а признак десятичного представления (букву «d») обычно опускают. Байт из предыдущих примеров имеет десятичное значение 165. В отличие от двоичной и шестнадцатеричной формы записи, по десятичной трудно в уме определить значение каждого бита, что иногда приходится делать.
Восьмеричные (octal) числа – каждая тройка бит (разделение начинается с младшего) записывается в виде цифры 0–7, в конце ставится признак «о». То же самое число будет записано как 245о. Восьмеричная система неудобна тем, что байт невозможно разделить поровну. см. также Представление чисел в ЭВМ
Алгоритм перевода чисел из одной системы счисления в другую
Перевод целых десятичных чисел в любую другую системы счисления осуществляется делением числа на основание новой системы счисления до тех пор, пока в остатке не останется число меньшее основания новой системы счисления. Новое число записывается в виде остатков деления, начиная с последнего.
Перевод правильной десятичной дроби в другую ПСС осуществляется умножением только дробной части числа на основание новой системы счисления до тех пор пока в дробной части не останутся все нули или пока не будет достигнута заданная точность перевода. В результате выполнения каждой операции умножения формируется одна цифра нового числа начиная со старшего.
Перевод неправильной дроби осуществляется по 1 и 2 правилу. Целую и дробную часть записывают вместе, отделяя запятой. Пример №1 .


Перевод из 2 в 8 в 16 системы счисления.
Эти системы кратны двум, следовательно, перевод осуществляется с использованием таблицы соответствия (см. ниже). Для перевода числа из двоичной системы счисления в восьмиричную (шестнадцатиричную) необходимо от запятой вправо и влево разбить двоичное число на группы по три (четыре – для шестнадцатиричной) разряда, дополняя при необходимости нулями крайние группы. Каждую группу заменяют соответствующей восьмиричной или шестнадцатиричной цифрой. Пример №2 . 1010111010,1011 = 1.010.111.010,101.1 = 1272,548
здесь 001=1; 010=2; 111=7; 010=2; 101=5; 100=4 При переводе в шестнадцатеричную систему необходимо делить число на части, по четыре цифры, соблюдая те же правила.
Пример №3 . 1010111010,1011 = 10.1011.1010,1011 = 2B12,13HEX
здесь 0010=2; 1011=B; 1010=12; 1011=13 Перевод чисел из 2 , 8 и 16 в десятичную систему исчисления производят путем разбивания числа на отдельные и умножения его на основание системы (из которой переводится число) возведенное в степень соответствующую его порядковому номеру в переводимом числе. При этом числа нумеруются влево от запятой (первое число имеет номер 0) с возрастанием, а в правую сторону с убыванием (т.е. с отрицательным знаком). Полученные результаты складываются. Пример №4 .
Пример перевода из двоичной в десятичную систему счисления.
1010010,1012 = 1·26+0·25+1·24+0·23+0·22+1·21+0·20 + 1·2-1+0·2-2+1·2-3 =
= 64+0+16+0+0+2+0+0.5+0+0.125 = 82.62510
Пример перевода из восьмеричной в десятичную систему счисления.
108.58 = 1*·82+0·81+8·80 + 5·8-1 = 64+0+8+0.625 = 72.62510
Пример перевода из шестнадцатеричной в десятичную систему счисления.
108.516 = 1·162+0·161+8·160 + 5·16-1 = 256+0+8+0.3125 = 264.312510
- Из десятичной системы счисления:
- разделить число на основание переводимой системы счисления;
- найти остаток от деления целой части числа;
- записать все остатки от деления в обратном порядке;
- Из двоичной системы счисления
- Для перевода в десятичную систему счисления необходимо найти сумму произведений основания 2 на соответствующую степень разряда;
- Для перевода числа в восьмеричную необходимо разбить число на триады.
Например, 1000110 = 1 000 110 = 1068 - Для перевода числа из двоичной системы счисления в шестнадцатеричную необходимо разбить число на группы по 4 разряда.
Например, 1000110 = 100 0110 = 4616
| Двоичная СС | Шестнадцатеричная СС |
| 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 |
Таблица для перевода в восьмеричную систему счисления
| Двоичная СС | Восьмеричная СС |
| 000 | 0 |
| 001 | 1 |
| 010 | 2 |
| 011 | 3 |
| 100 | 4 |
| 101 | 5 |
| 110 | 6 |
| 111 | 7 |
Пример №5 . Перевести число 100,12 из десятичной системы счисления в восьмеричную систему счисления и обратно. Пояснить причины расхождений.
Решение.
1 Этап. Перевод числа из десятичной системы счисления в восьмеричную систему счисления.
Остаток от деления записываем в обратном порядке. Получаем число в 8-ой системе счисления: 144
100 = 1448
Для перевода дробной части числа последовательно умножаем дробную часть на основание 8. В результате каждый раз записываем целую часть произведения.
0.12*8 = 0.96 (целая часть 0 )
0.96*8 = 7.68 (целая часть 7 )
0.68*8 = 5.44 (целая часть 5 )
0.44*8 = 3.52 (целая часть 3 )
Получаем число в 8-ой системе счисления: 0753.
0.12 = 0.7538
2 Этап. Перевод числа из десятичной системы счисления в восьмеричную систему счисления.
Обратный перевод из восьмеричной системы счислений в десятичную.
Для перевода целой части необходимо умножить разряд числа на соответствующую ему степень разряда.
144 = 8 2 *1 + 8 1 *4 + 8 0 *4 = 64 + 32 + 4 = 100
Для перевода дробной части необходимо разделить разряд числа на соответствующую ему степень разряда
0753 = 8 -1 *0 + 8 -2 *7 + 8 -3 *5 + 8 -4 *3 = 0.119873046875 = 0.1199
144,07538 = 100,119910 ≈ 100,1210
Разница в 0,0001 (100,12 — 100,1199) объясняется погрешностью округлений при переводе в восьмеричную систему счислений. Эту погрешность можно уменьшить, если взять большее число разрядов (например, не 4, а 8).