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

Как переводить в 16 ричную систему

Системы счисления: как перевести из 2 в 16

Возникли какие-то трудности и недопонимания с преобразованием чисел из двоичной в шестнадцатеричную систему счисления? Записывайтесь ко мне на индивидуальные уроки по информатике и ИКТ. На своих частных уроках мы с учениками разбираем не только теоретическую часть, но также решаем колоссальное количество различных тематических упражнений.

Нужно знать, что такое двоичная или бинарная система счисления

Прежде чем размышлять о том, как перевести число из 2 в 16, необходимо хорошо понимать, что собою представляют числа в двоичной системе счисления. Напомню, что алфавит бинарной системы счисления состоит из двух допустимых элементов – 0 и 1. Это означает, что абсолютно любое число, записанное в двоичном виде, будет состоять из набора нулей и единиц. Вот примеры чисел, записанных в бинарном представлении: 10010, 100, 111101010110, 1000001.

Нужно знать, что такое шестнадцатеричная система счисления

С бинарной системой мы разобрались, вспомнили базовые моменты, сейчас поговорим о 16-ричной системе. Алфавит 16-ричной системы счисления состоит из шестнадцати различных знаков: 10 арабских цифр (от 0 до 9) и 6 первых заглавных латинских букв (от ‘А’ до ‘F’). Это означает, что абсолютно любое число, записанное в шестнадцатеричном виде, будет состоять из знаков вышеприведенного алфавита. Вот примеры чисел, записанных в 16-ричном представлении:

810A FCDF 198303 100FFF0

Поговорим об алгоритме преобразования числа из 2-ной в 16-ричную систему счисления

Нам потребуется в обязательном порядке рассмотреть кодировочную таблицу Тетрад. Без применения данной таблицы будет довольно затруднительно оперативно осуществлять перевод чисел из 2 в 16 систему.

Назначение кодировочной таблицы Тетрад: однозначно сопоставить символы двоичной системы счисления и 16-ричной системы счисления.

Таблица Тетрад имеет следующую структуру:

Таблица Тетрад

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

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

101 . 0111 . 1100 . 1010

После разбиения мы получили четыре группы: 101, 0111, 1100 и 1010. Особого внимания требует самый левый сегмент, то есть сегмент 101. Как видно, его длина составляет 3 разряда, а необходимо, чтобы его длина равнялась четырем, следовательно, дополним данный сегмент ведущим незначащим нулем:

101 -> 0 101.

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

На заключительном этапе преобразования необходимо каждую из полученных бинарных групп перевести в соответствующее значение по кодировочной таблице Тетрад.

0101 -> 5 0111 -> 7 1100 -> C 1010 -> A

А сейчас я вам предлагаю ознакомиться с мультимединым решением, в котором показано как неравномерный код преобразуется из бинарного состояния в 16-ричное состояние:

Краткие выводы

В данной небольшой статье мы разобрали тему «Системы счисления: как перевести из 2 в 16». Если у вас остались какие-либо вопросы, недопонимания, то звоните и записывайтесь на мои индивидуальные уроки по информатике и программированию. Я предложу вам решить не один десяток подобных упражнений и у вас не останется ни одного вопроса. Вообще, системы счисления – чрезвычайно важная тема, которая образует фундамент, используемый на протяжении всего курса информатики.

Перевод систем счисления int в int из 2 в 16 -ричную

if(str_mat.toInt(nullptr,16) == 0x5A) вы тут пытаетесь перевести из 16 ричной системы строку str_mat = «01011010», т.е. в 16 ричной системе счисления число 01011010 это совсем другое число что в двоичной

20 сен 2018 в 9:24

Существует много алгоритмов, есть два способа. 1)делить на 16 и остаток от деления превращать в цифру. 2) Учитывая что байт содержит всегда две цифры HiLo, то Hi=(bt >> 4) а Lo=(bt & 15) . Ну и. можно просто воспользоваться библиотечными ф-циями.

20 сен 2018 в 9:24

Мне кажется вы немножко не поняли как работает toInt . В пример 255 превратится в 597 всё правильно — 0x255 это 597. То есть toInt берёт строку, и пытается её интерпретировать как запись в некоторой системе счисления, то есть для строки 255 при интерпретировании как 16-ричной системы получим 597, а как 8-ричной — 173

20 сен 2018 в 9:29
я прекрасно понимаю о чём вы говорите, но я не знаю как это исправить, какой код мне написать .
20 сен 2018 в 9:34

@timob256 Вам ниже в ответе рассказали про QString::number и даже примеры привели в комментарии. Это то что вам нужно.

20 сен 2018 в 9:44

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Вы нигде не переводите в десятичную систему.

int a = 10; 

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

int x = 0x10; 

а здесь записано шестнадцатеричное число, но все равно, в x будет записано в машинноудобном формате.

Поэтому, гда Вы пишете

int str_mit = str_mat.toInt(nullptr,2); 

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

А с этой формы можно перевести в любую другую удобную для отображения, например 16-ричную

QString s = QString::number(str_mit, 16); 

Заметьте, переводим в строку — так как строка может хранить «отображение».

Но если это сложно понять, тогда вот упрощенный код

QString n2m(QString origin, int from, int to)

и соответственно 10->16

Системы счисления. Правила перевода из 2-й в 8-ую и 16-ричную СС и наоборот

В презентации даны правила перевода целых и дробных чисел из 2-й в 8-ю и 16-ю СС и наоборот. Разобраны примеры, есть задания для закрепления с решением и карточки двух вариантов самостоятельной работы.

Загородняя Татьяна Анатольевна

Описание разработки

Перевод чисел внутри родственных систем (в частности, с основанием 2, 8 и 16) упрощен, поскольку все цифры алфавита для систем с большим основанием можно представить совокупностью цифр системы с наименьшим основанием.

Правило Чтобы перевести целое двоичное число в восьмеричную (8=23) систему счисления необходимо:

  • разбить данное число справа налево на группы по 3 цифры в каждой;
  • рассмотреть каждую группу и записать ее соответствующей цифрой восьмеричной системы счисления.

Перевод чисел из одной СС в другую

Перевести из 2 → 8

Правило Чтобы перевести целое двоичное число в 16-ричную (16=24) систему счисления необходимо:

  • разбить данное число справа налево на группы по 4 цифры в каждой;
  • рассмотреть каждую группу и записать ее соответствующей цифрой 16-ричной системы счисления.

Перевести из 2 → 16

Правило Чтобы перевести дробное двоичное число в восьмеричную (шестнадцатеричную) систему счисления необходимо:

  • разбить данное число, начиная от запятой влево целую часть и вправо дробную часть на группы по 3 (4) цифры в каждой;
  • рассмотреть каждую группу и записать ее соответствующей цифрой восьмеричной (шестнадцатеричной) системы счисления.

Содержимое разработки

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

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

Перевод чисел внутри родственных систем (в частности, с основанием 2, 8 и 16) упрощен, поскольку все цифры алфавита для систем с большим основанием можно представить совокупностью цифр системы с наименьшим основанием: № 1 Основание системы счисления Числа 2 10 3 Десятеричная 2 0 1 0000 4 Двоичная 8 16 0001 2 Восьмеричная 0 0 1 Шестнадцатеричная 0010 3 1 2 0011 4 2 5 3 0100 0101 6 4 3 4 7 5 0110 0111 8 5 6 6 7 1000 9 7 10 1001 10 11 8 11 1010 12 1011 12 9 A 1100 13 13 B 14 1101 14 15 C 15 1110 1111 D 16 E 17 F

Перевод чисел внутри родственных систем (в частности, с основанием 2, 8 и 16) упрощен, поскольку все цифры алфавита для систем с большим основанием можно представить совокупностью цифр системы с наименьшим основанием:

Основание системы счисления

Десятеричная

Восьмеричная

Шестнадцатеричная

Перевод целых чисел. Правило Чтобы перевести целое двоичное число в восьмеричную (8=2 3 ) систему счисления необходимо: • разбить данное число справа налево на группы по 3 цифры в каждой; • рассмотреть каждую группу и записать ее соответствующей цифрой восьмеричной системы счисления.

Перевод целых чисел.

  • Правило Чтобы перевести целое двоичное число в восьмеричную (8=2 3 ) систему счисления необходимо:
  • • разбить данное число справа налево на группы по 3 цифры в каждой;
  • • рассмотреть каждую группу и записать ее соответствующей цифрой восьмеричной системы счисления.

Задание: Перевести из 2 → 8 10110110 100011001 1110111

Задание: Перевести из 2 → 8 10110110 2 =266 100011001 2 =431 8 1110111 2 =167 8

  • Перевести из 2 → 8
  • 10110110
  • 100011001
  • 1110111
  • Перевести из 2 → 8
  • 10110110 2 =266
  • 100011001 2 =431 8
  • 1110111 2 =167 8

Правило Чтобы перевести целое двоичное число в 16-ричную (16=2 4 ) систему счисления необходимо: • разбить данное число справа налево на группы по 4 цифры в каждой; • рассмотреть каждую группу и записать ее соответствующей цифрой 16-ричной системы счисления.

  • Правило Чтобы перевести целое двоичное число в 16-ричную (16=2 4 ) систему счисления необходимо:
  • • разбить данное число справа налево на группы по 4 цифры в каждой;
  • • рассмотреть каждую группу и записать ее соответствующей цифрой 16-ричной системы счисления.

Задание: Перевести из 2 → 16 10110110 100011001 1110111

Задание: Перевести из 2 → 8 → 16 10110110 2 = 266 8 =В6 16 100011001 2 =431 8 = 119 16 1110111 2 =167 8 =77 16

  • Перевести из 2 → 16
  • 10110110
  • 100011001
  • 1110111

Перевод дробных чисел П равило Чтобы перевести дробное двоичное число в восьмеричную (шестнадцатеричную) систему счисления необходимо: • разбить данное число, начиная от запятой влево целую часть и вправо дробную часть на группы по 3 (4) цифры в каждой; • рассмотреть каждую группу и записать ее соответствующей цифрой восьмеричной (шестнадцатеричной) системы счисления.

  • Перевести из 2 → 8 → 16
  • 10110110 2 = 266 8 =В6 16
  • 100011001 2 =431 8 = 119 16
  • 1110111 2 =167 8 =77 16

Перевод дробных чисел

  • ПравилоЧтобы перевести дробное двоичное число в восьмеричную (шестнадцатеричную) систему счисления необходимо:
  • • разбить данное число, начиная от запятой влево целую часть и вправо дробную часть на группы по 3 (4) цифры в каждой;
  • • рассмотреть каждую группу и записать ее соответствующей цифрой восьмеричной (шестнадцатеричной) системы счисления.

Перевод чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную систему счисления. Правило Для того, чтобы восьмеричное (шестнадцатеричное) число перевести в двоичную систему счисления, необходимо каждую цифру этого числа заменить соответствующим числом, состоящим из 3 (4) цифр двоичной системы счисления.

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

  • Правило
  • Для того, чтобы восьмеричное (шестнадцатеричное) число перевести в двоичную систему счисления, необходимо каждую цифру этого числа заменить соответствующим числом, состоящим из 3 (4) цифр двоичной системы счисления.

Найдите где нужно поставить запятую

Найдите где нужно поставить запятую

Перевести в 2-ю систему счисления 427 8 = 216 8 = 1072 8 = 427 16 = А41 16 = 1С4В 16 =

Перевести в 2-ю систему счисления

Перевести в 2-ю систему счисления 427 8 =100010111 2 216 8 =10001110 2 1072 8 =1000111010 2 427 16 =10000100111 2 А41 16 =101001000001 2 1С4В 16 =110001001011 2

  • 427 8 =
  • 216 8 =
  • 1072 8 =
  • 427 16 =
  • А41 16 =
  • 1С4В 16 =

Перевести в 2-ю систему счисления

Проверочная работа Перевести числа в соответствующие СС. 1 вариант 2 вариант 2 2 8 8 101110 16 16 152 251 4В5 101100 2А4

  • 427 8 =100010111 2
  • 216 8 =10001110 2
  • 1072 8 =1000111010 2
  • 427 16 =10000100111 2
  • А41 16 =101001000001 2
  • 1С4В 16 =110001001011 2

Проверочная работа Перевести числа в соответствующие СС. 1 вариант 2 вариант

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

Решение получаем через калькулятор. Переводим целую часть числа ( 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

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

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