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

Как перевести из восьмеричной в шестнадцатеричную

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

Алгоритм перевода чисел из одной системы счисления в другую наиболее прост в том случае, когда одно из оснований этих систем является степенью другой, как, например, в случае двоичной и восьмеричной систем счисления. В таком случае алгоритм перевода состоит в простой замене чисел одной системы на равные им числа другой системы счисления (в случае положительных чисел). На начальном этапе удобно и полезно воспользоваться таблицей соответствия, приведенной в Приложении.

Пусть требуется перевести восьмеричное число 24738 в двоичное число. Воспользовавшись Таблицей соответствия из Приложения, получим:

поскольку 28 = 0102, 48 = 1002, 78 = 1112. Следует помнить, что восьмеричное число кодируется тремя битами, и выписывать триады нужно полностью. Исключением из этого правила может служить только старшая триада, в которой старший бит (СБ) равен нулю.

24738 = 101001110112 = 0101 0011 10112 = 53B16

3. Прямой перевод между двоичной, восьмеричной и шестнадцатеричной системами счисления

Иногда возникают ситуации, когда число необходимо перевести из недесятичной системы счисления в недесятичную. Например, из двоичной в восьмеричную. Используя правила, описанные ранее, ты можешь это сделать только через десятичную систему счисления. Двоичное число перевести в десятичное, потом десятичное — в восьмеричное. Это занимает много времени. Рассмотрим другой способ перевода между двоичной, восьмеричной и шестнадцатеричной системами счисления. Основания этих систем счисления являются степенями двойки: 2 = 2 1 , 8 = 2 3 , 16 = 2 4 .

Правило перевода из двоичной системы счисления в восьмеричную.

1. Необходимо разбить двоичное число на тройки (триады), начиная с крайнего правого разряда. Нужно помнить о том, что слева к любому числу можно дописать любое количество нулей.

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

1. Необходимо разбить двоичное число на четвёрки (тетрады), начиная с крайнего правого разряда. Нужно помнить о том, что слева к любому числу можно дописать любое количество нулей.

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

Можно вводить как целые числа, например 34 , так и дробные, например, 637.333 . Для дробных чисел указывается точность перевода после запятой.

  1. Операции с двоичными числами (сложение и вычитание)

Способы представления чисел

Двоичные (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
  1. Из десятичной системы счисления:
    • разделить число на основание переводимой системы счисления;
    • найти остаток от деления целой части числа;
    • записать все остатки от деления в обратном порядке;
  2. Из двоичной системы счисления
    • Для перевода в десятичную систему счисления необходимо найти сумму произведений основания 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).

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

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

Алгоритм перевода восьмеричных чисел в шестнадцатеричный код

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

Подробно о переводе из восьмеричной в десятичную систему смотрите на этой странице, о переводе из десятичной в шестнадцатеричную — на смотрите здесь. Для целостного понимания, разберем несколько примеров, но для начала вспомним алфавиты восьмеричной, десятичной и шестнадцатеричной систем счисления:

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

Пример 1: перевести 355 из восьмеричной системы в шестнадцатеричную.

Как было сказано выше, необходимо сначала перевести число в десятичное, а полученный ответ в двоичную. Решение будет выглядеть следующим образом:

Для перевода восьмеричного числа 512 в десятичную систему, воспользуемся формулой:

3558=3 ∙ 8 2 + 5 ∙ 8 1 + 5 ∙ 8 0 = 3 ∙ 64 + 5 ∙ 8 + 5 ∙ 1 = 192 + 40 + 5 = 23710

Полученное число 237 переведем из десятичной системы счисления в шестнадцатеричную. Для этого, осуществим последовательное деление на 16, до тех пор пока остаток не будет меньше 16-ти.

Полученные остатки записываем в обратном порядке, таким образом:

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

Пример 2: перевести 545.1010 из восьмеричной в шестнадцатеричную систему счисления.

Общий смысл алгоритма перевода дробного числа, аналогичен алгоритму перевода целого, т.е. вначале переводим в десятичную, а затем в шестнадцатеричную:

1. Для перевода числа 545.1010 в десятичную систему воспользуемся формулой:

545.10108=5 ∙ 8 2 + 4 ∙ 8 1 + 5 ∙ 8 0 + 1 ∙ 8 -1 + 0 ∙ 8 -2 + 1 ∙ 8 -3 + 0 ∙ 8 -4 = 5 ∙ 64 + 4 ∙ 8 + 5 ∙ 1 + 1 ∙ 0.125 + 0 ∙ 0.015625 + 1 ∙ 0.001953125 + 0 ∙ 0.000244140625 = 320 + 32 + 5 + 0.125 + 0 + 0.001953125 + 0 = 357.12695312510

Обратите внимание! Формула перевода дробного числа в десятичную систему, очень похожа на формулу перевода целого, однако немного отличается.

2. Полученное число 357.126953125 переведем из десятичной системы счисления в шестнадцатеричную. Для этого потребуется перевести вначале целую часть, а затем дробную. Таким образом необходимо:

  1. Перевести 357 в шестнадцатеричную систему;
  2. Перевести 0.126953125 в шестнадцатеричную систему;

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

Полученные остатки записываем в обратном порядке, таким образом:

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

0.126953125 ∙ 16 = 2.03125 (2)
0.03125 ∙ 16 = 0.5 (0)
0.5 ∙ 16 = 8 (8)

Ответом станет прямая последовательность целых частей произведения. Т.е.

2.3. Осталось соединить переведенные части, таким образом:

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

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