Перевод чисел из шестнадцатеричной системы в десятичную
Ричная
Шестнадцатеричная система счисления (шестнадцатеричные числа) - позиционная система счисления по целочисленному основанию 16. Обычно в качестве шестнадцатеричных цифр используются десятичные цифры от 0 до 9 и латинские буквы от A до F для обозначения цифр от 1010 до 1510, то есть (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F).
Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.
Например, требуется перевести шестнадцатеричное число 5A3 в десятичное. В этом числе 3 цифры. В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:
5A316 = 3·160+10·161+5·162
3·1+10·16+5·256 = 3+160+1280 = 144310
Преобразование десятичных чисел в двоичные
Допустим, нам нужно перевести число 19 в двоичное. Вы можете воспользоваться следующей процедурой:
19 /2 = 9 с остатком 1
9 /2 = 4 c остатком 1
4 /2 = 2 без остатка 0
2 /2 = 1 без остатка 0
1 /2 = 0 с остатком 1
Итак, мы делим каждое частное на 2 и записываем остаток в конец двоичной записи. Продолжаем деление до тех пор, пока в частном не будет 0. Результат записываем справа налево. Т.е. нижнее число будет самым левым и.т.д. В результате получаем число 19 в двоичной записи: 10011.
Преобразование десятичных чисел в троичные
Последовательно делите сначала число, а затем частные от деления на 3 до тех пор, пока очередное частное не станет меньше 3, и записываете остатки с право на лево. В конце приписываете почследнее частное.
38: 3 = 12 ост 2
12: 3 = 4 ост 0
4: 3 = 1 ост 1
Итого 38(10) = 1102(3)
Преобразование десятичных чисел в восьмеричные
Для перевода чисел из десятичной системы счисления в восьмеричную используют тот же "алгоритм замещения", что и при переводе из десятичной системы счисления в двоичную, только в качестве делителя используют 8, основание восьмеричной системы счисления:
Делим десятичное число А на 8. Частное Q запоминаем для следующего шага, а остаток a записываем как младший бит восьмеричного числа.
Если частное q не равно 0, принимаем его за новое делимое и повторяем процедуру, описанную в шаге 1. Каждый новый остаток записывается в разряды восьмеричного числа в направлении от младшего бита к старшему.
Алгоритм продолжается до тех пор, пока в результате выполнения шагов 1 и 2 не получится частное Q = 0 и остаток a меньше 8.
Например, требуется перевести десятичное число 3336 в восьмеричное. В соответствии с приведенным алгоритмом получим: 333610: 8 = 41710
333610 - 333610 = 0, остаток 0 записываем в МБ восьмеричного числа.
41710 - 41610 = 1, остаток 1 записываем в следующий после МБ разряд восьмеричного числа.
5210 - 4810 = 4, остаток 4 записываем в старший разряд восьмеричного числа.
610: 8 = 010, остаток 0, записываем 6 в самый старший разряд восьмеричного числа.
Таким образом, искомое восьмеричное число равно 64108.
Преобразование десятичных чисел в 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 - 11210 = 15, остаток 15 в виде F записываем в старший разряд шестнадцатеричного числа.
710: 16 = 010, остаток 7 записываем в старший разряд шестнадцатеричного числа.
Таким образом, искомое шестнадцатеричное число равно 7FFF16.
Примеры
134 = 10000110 2
Возникла в древнем Вавилоне. В Индии система работает в виде позиционной десятичной нумерации с использованием нуля, у индусов данную систему чисел позаимствовала арабская нация, у них, в свою очередь, взяли европейцы. В Европе эту систему стали называть арабской.
Позиционная система счисления — значение всех цифр зависит от позиции (разряда) данной цифры в числе.
Примеры , стандартная десятичная система счисления - это позиционная система. Допустим, дано число 453 . Цифра 4 обозначает сотни и соответствует числу 400, 5 — кол-во десятков и соответствует значению 50 , а 3 — единицы и значению 3 . Легко заметить, что с увеличением разряда увеличивается значение. Таким образом, заданное число запишем в виде суммы 400+50+3=453.
Шестнадцатеричная система счисления (шестнадцатеричные числа) — позиционная система счисления. Основанием шестнадцатеричной системы счисления является число 16.
Записывая числа в восьмеричной системе счисления мы получаем довольно компактные выражения, однако в шестнадцатеричной системе мы получаем выражения более компактными.
Первыми десятью цифрами из шестнадцати шестнадцатеричных цифрах является стандартный интервал 0 - 9 , последующие шесть цифр выражают при помощи первых букв латинского алфавита: A , B , C , D , E , F . Перевод из шестнадцатеричной системы в двоичную систему и в обратную сторону делают аналогично процессу для восьмеричной системы.
Шестнадцатеричную систему счисления довольно хорошо используют в современных компьютерах, например с ее помощью указывают цвет: #FFFFFF — белый цвет.
Что бы перевести шестнадцатеричное число в десятичное , нужно заданное число привести к виду суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.
Например , переведем шестнадцатеричное число 5A3 в десятичное. Здесь 3 цифры. Исходя их выше сказанного правила, приведем его к виду суммы степеней с основанием 16:
5A3 16 = 3·16 0 +10·16 1 +5·16 2 = 3·1+10·16+5·256 = 3+160+1280 = 1443 10
Для перевода многозначного двоичного числа в шестнадцатеричную систему необходимо разделить его на тетрады справа налево и поменять все тетрады соответствующей шестнадцатеричной цифрой. Для перевода числа из шестнадцатеричной системы в двоичную необходимо поменять каждую все цифры на соответствующие тетрады из таблицы перевода, которую вы найдете ниже.
Например :
010110100011 2 = 0101 1010 0011 = 5A3 16
1. Из десятичной системы счисления:
2. Из двоичной системы счисления:
Например, 1000110 = 1 000 110 = 1068
Например, 1000110 = 100 0110 = 4616.
Таблицы для перевода:
Двоичная СС |
Шестнадцатеричная СС |
0000 |
|
0001 |
|
0010 |
|
0011 |
|
0100 |
|
0101 |
|
0110 |
|
0111 |
|
1000 |
|
1001 |
|
1010 |
|
1011 |
|
1100 |
|
1101 |
|
1110 |
|
1111 |
Двоичная СС |
Можно вводить как целые числа, например 34 , так и дробные, например, 637.333 . Для дробных чисел указывается точность перевода после запятой.
Вместе с этим калькулятором также используют следующие:
Пример №1
.
Перевод из 2 в 8 в 16 системы счисления.
Эти системы кратны двум, следовательно, перевод осуществляется с использованием таблицы соответствия (см. ниже).
Для перевода числа из двоичной системы счисления в восьмиричную (шестнадцатиричную) необходимо от запятой вправо и влево разбить двоичное число на группы по три (четыре – для шестнадцатиричной) разряда, дополняя при необходимости нулями крайние группы. Каждую группу заменяют соответствующей восьмиричной или шестнадцатиричной цифрой.
Пример №2
. 1010111010,1011 = 1.010.111.010,101.1 = 1272,51 8
здесь 001=1; 010=2; 111=7; 010=2; 101=5; 001=1
При переводе в шестнадцатеричную систему необходимо делить число на части, по четыре цифры, соблюдая те же правила.
Пример №3
. 1010111010,1011 = 10.1011.1010,1011 = 2B12,13 HEX
здесь 0010=2; 1011=B; 1010=12; 1011=13
Перевод чисел из 2 , 8 и 16 в десятичную систему исчисления производят путем разбивания числа на отдельные и умножения его на основание системы (из которой переводится число) возведенное в степень соответствующую его порядковому номеру в переводимом числе. При этом числа нумеруются влево от запятой (первое число имеет номер 0) с возрастанием, а в правую сторону с убыванием (т.е. с отрицательным знаком). Полученные результаты складываются.
Пример №4
.
Пример перевода из двоичной в десятичную систему счисления.
1010010,101 2 = 1·2 6 +0·2 5 +1·2 4 +0·2 3 +0·2 2 +1·2 1 +0·2 0 + 1·2 -1 +0·2 -2 +1·2 -3 =
= 64+0+16+0+0+2+0+0.5+0+0.125 = 82.625 10
Пример перевода из восьмеричной в десятичную систему счисления.
108.5 8 = 1*·8 2 +0·8 1 +8·8 0 + 5·8 -1 = 64+0+8+0.625 = 72.625 10
Пример перевода из шестнадцатеричной в десятичную систему счисления.
108.5 16 = 1·16 2 +0·16 1 +8·16 0 + 5·16 -1 = 256+0+8+0.3125 = 264.3125 10
Еще раз повторим алгоритм перевода чисел из одной системы счисления в другую ПСС
Двоичная СС | Шестнадцатеричная СС |
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 |
Таблица для перевода в восьмеричную систему счисления
ПЕРЕВОД ЧИСЕЛ ИЗ ВОСЬМЕРИЧНОЙ СИСТЕМЫ В ДЕСЯТИЧНУЮ
Восемь раз отмерь, один раз переведи.
А. Алешин
Алгоритм перевода чисел из восьмеричной в десятичную систему счисления аналогичен уже рассматривавшемуся нами в разделе Перевод чисел из двоичной системы в десятичную. Различие состоит лишь в том, что для восьмеричной системы счисления основанием является число 8 , а правило перевода в данном случае может быть сформулировано в следующем виде:
Для перевода восьмеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания восьмеричной системы счисления на соответствующие цифры в разрядах восьмеричного числа .
Например, требуется перевести восьмеричное число 2357 в десятичное. В этом числе 4 цифры и 4 разряда (разряды считаются, начиная с нулевого, которому соответствует младший бит). В соответствии с уже известным нам правилом представим его в виде суммы степеней с основанием 8 :
2357 8 = (2·8 3)+(3·8 2)+(5·8 1)+(7·8 0) = 2·512 + 3·64 + 5·8 + 7·1 = 1263 10
К
аждый О
хотник Ж
елает З
нать, Г
де С
идит Ф
азан.
Запишите в шестнадцатеричной системе счисления все цвета,
встречающиеся в этом мнемоническом правиле. Слабо?
А. Алешин
После изучения предыдущего раздела переформулировать алгоритм перевода чисел из шестнадцатеричной в десятичную систему счисления не составляет никакого труда. Помнить следует лишь о том, что для шестнадцатеричной системы счисления основанием является число 16 , и правило перевода в данном случае может быть сформулировано в следующем виде:
Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа .
Например, требуется перевести шестнадцатеричное число F45ED23C в десятичное. В этом числе 8 цифр и 8 разрядов (помним, что разряды считаются, начиная с нулевого, которому соответствует младший бит). В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16 :
F45ED23C 16 = (15·16 7)+(4·16 6)+(5·16 5)+(14·16 4)+(13·16 3)+(2·16 2)+(3·16 1)+(12·16 0) = 4099854908 10
Для вычислений "вручную" и решения примеров и контрольных заданий вам могут пригодиться таблицы степеней оснований изучаемых систем счисления (2, 8, 10, 16), приведенные вПриложении.
Для перевода чисел из десятичной системы счисления в двоичную используют так называемый "алгоритм замещения", состоящий из следующей последовательности действий:
1. Делим десятичное число А на 2 . Частное Q запоминаем для следующего шага, а остаток a записываем как младший бит двоичного числа.
2. Если частное q не равно 0 , принимаем его за новое делимое и повторяем процедуру, описанную в шаге 1. Каждый новый остаток (0 или 1 ) записывается в разряды двоичного числа в направлении от младшего бита к старшему .
3. Алгоритм продолжается до тех пор, пока в результате выполнения шагов 1 и 2 не получится частное Q = 0 и остаток a = 1 .
Например, требуется перевести десятичное число 247 в двоичное. В соответствии с приведенным алгоритмом получим:
247 10: 2 = 123 10 |
247 10 - 246 10 = 1, остаток 1 записываем в МБ двоичного числа. |
123 10: 2 = 61 10 |
123 10 - 122 10 = 1, остаток 1 записываем в следующий после МБ разряд двоичного числа. |
61 10: 2 = 30 10 |
61 10 - 60 10 = 1, остаток 1 записываем в старший разряд двоичного числа. |
30 10: 2 = 15 10 |
30 10 - 30 10 = 0, остаток 0 записываем в старший разряд двоичного числа. |
15 10: 2 = 7 10 |
15 10 - 14 10 = 1, остаток 1 записываем в старший разряд двоичного числа. |
7 10: 2 = 3 10 |
7 10 - 6 10 = 1, остаток 1 записываем в старший разряд двоичного числа. |
3 10: 2 = 1 10 |
3 10 - 2 10 = 1, остаток 1 записываем в старший разряд двоичного числа. |
1 10: 2 = 0 10 , остаток 1 записываем в старший разряд двоичного числа. |
Представление чисел в ЭВМ: естественная и нормальная формы (+методичка)
В ЭВМ используются следующие формы представления данных:
числа с фиксированной точкой (запятой) или естественная форма;
числа с плавающей точкой (запятой) или нормальная форма;
десятичные числа;
символьные данные.
При естественной форме, иначе называемой формой с фиксированной запятой, числа вюодвпся в виде целой и дробной частей, разделенных запятой (точкой). Положение последней строго фиксировано: запятая находится либо -перед цифрой старшего разряда, либо после цифры младшего разряда. Первый вариант относится к представлению чисел, которые по модулю (без учета знака) меньше единицы, второй вариант представления распространяется только на целые числа. Порядковые номера разрядов идут слева направо, начиная с нулевого. Его называют знаковым разрядом, и в этом разряде О сооггоетствует знаку плюс, а 1 - знаку минус.
Нормальная или полулогарифмическая форма, иначе называемая формой с плавающей запятой, предполагает ввод чисел в полулогарифмическом виде - число состоит нз двух частей: мантиссы числа, обозначаемой буквой т, и порядка числа, который обозначается буквой р, причем т<1, а р - всегда целое. Положение запятой в числе зависит от порядка р (отсюда н название формы - с плавающей запятой). Например, одно и то же десятичное числа можио П1рвдстав,ить в таких варнангах:
0,81756423-10» р = 0; 8,17564230,10-1. р=-1; 0,08175642.101 P==-fl.
Когда в мантиссе перед запятой стоит нуль, а после запятой - цифра, отличная от нуля, то такую форму называют нормализованной.
Действия над числами, представленными в нормальной форме, сложнее, чем иад числами с фиксированной запятой. Но зато форма «с плавающей запятой>-позволяет охваггить очень ширлжий диапазон чисел.
Числа с фиксированной точкой
В общем случае разрядная сетка ЭВМ для размещения чисел в форме с фиксированной точкой показана на рисунке.
На рисунке показано п разрядов для представления целой части числа и r разрядов - для дробной части числа.
A) фиксированная
При заданных п иr диапазон изменения модулей чисел, коды которых могут быть представлены в данной разрядной сетке, определяется неравенством
Использование формы с фиксированной точкой для представления смешанных (с целой и дробной частью) чисел в ЭВМ практически не встречается. Как правило, используются ЭВМ либо с дробной арифметикой (п=0), либо с целочисленной арифметикой (r=0).
Форма представления чисел с фиксированной точкой упрощает аппаратную реализацию ЭВМ, уменьшает время выполнения машинных операций, однако при решении задач на машине необходимо постоянно следить за тем, чтобы все исходные данные, промежуточные и окончательные результаты находились в допустимом диапазоне представления. Если этого не соблюдать, то возможно переполнение разрядной сетки, и результат вычислений будет неверным. От этих недостатков в значительной степени свободны ЭВМ, использующие форму представления чисел с плавающей точкой, или нормальную форму.
Числа с плавающей точкой
b) рис 14.б с плавающей точкой
В нормальной форме число представляется в виде произведения X=mq p
где т - мантисса числа;
q - основание системы счисления;
р - порядок.
Для задания числа в нормальной форме требуется задать знаки мантиссы и порядка, их модули в q-ичном коде, а также основание системы счисления. Нормальная форма представления чисел неоднозначна, ибо взаимное изменение т и р приводит к плаванию точки (запятой). Отсюда произошло название формы представления чисел.
Для однозначности представления чисел в ЭВМ используется нормальная нормализованная форма, в которой положение точки всегда задается перед значащей цифрой мантиссы, т. е. выполняется условие
В общем случае разрядную сетку ЭВМ для размещения чисел в нормальной форме можно представить в виде, изображенном на рис. Разрядная сетка содержит:
· разряд для знака мантиссы;
· r цифровых разрядов для q-ичного кода модуля мантиссы;
· разряд для кода знака порядка;
· s разрядов для q-ичного кода модуля порядка.
Диапазон представления модулей чисел в нормальной нормализованной форме определяется следующим неравенством:
Пример :
133,21 = 10 2 *1.3321, 10 2 - порядок, 1.3321- мантисса.
1332.1 = 10 3 *1.3321
0.13321 = 10 -1 *1.3321
Одно и то же число может быть записано в различных формах
452,34 = 452340·10 -3 = 0,0045234·10 5 = 0,45234·10 3
Естественная форма Нормальная форма
В конкретной ЭВМ диапазон представления чисел с плавающей точкой зависит от основания системы и числа разрядов для представления порядка.
При этом у одинаковых по длине форматов чисел с плавающей точкой с увеличением основания системы счисления существенно расширяется диапазон представляемых чисел.
Точность вычислений при использовании формата с плавающей точкой определяется числом разрядов мантиссы r. Она увеличивается с увеличением числа разрядов.
При представлении информации в виде десятичных многоразрядных чисел каждая десятичная цифра заменяется двоично-десятичным кодом. Для ускорения обмена информацией, экономии памяти и удобства операций над десятичными числами предусматриваются специальные форматы их представления: зонный (распакованный)
и упакованный
. Зонный формат используется в операциях ввода-операций. Для этого в ЭВМ имеются специальные команды упаковки и распаковки десятичных чисел.