На гараже написано число в восьмеричной системе счисления а на машине в шестнадцатеричной
Перевод из восьмеричной системы счисления в шестнадцатеричную
Для перевода чисел из восьмеричной системы в шестнадцатеричную, воспользуемся соответствующим алгоритмом. Важно заметить, что алгоритм перевода целых и дробных чисел будет отличаться.
Алгоритм перевода восьмеричных чисел в шестнадцатеричный код
Подробно о переводе из восьмеричной в десятичную систему смотрите на этой странице, о переводе из десятичной в шестнадцатеричную — на смотрите здесь. Для целостного понимания, разберем несколько примеров, но для начала вспомним алфавиты восьмеричной, десятичной и шестнадцатеричной систем счисления:
Основание | Название | Алфавит |
---|---|---|
8 | Восьмеричная | 0, 1, 2, 3, 4, 5, 6, 7 |
10 | Десятичная | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 |
16 | Шестнадцатеричная | 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F |
Перевод целого восьмеричного числа в шестнадцатеричную систему счисления
Пример 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 в десятичную систему воспользуемся формулой:
Обратите внимание! Формула перевода дробного числа в десятичную систему, очень похожа на формулу перевода целого, однако немного отличается.
2. Полученное число 357.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. Осталось соединить переведенные части, таким образом:
Перевести число 10101111010 из восьмеричной системы в шестнадцатеричную
Задача: перевести число 10101111010 из восьмеричной в шестнадцатеричную систему счисления.
Для перевода 10101111010 из восьмеричной в шестнадцатеричную систему счисления, воспользуемся следующим алгоритмом:
1. Для перевода числа 10101111010 в десятичную систему воспользуемся формулой:
101011110108=1 ∙ 8 10 + 0 ∙ 8 9 + 1 ∙ 8 8 + 0 ∙ 8 7 + 1 ∙ 8 6 + 1 ∙ 8 5 + 1 ∙ 8 4 + 1 ∙ 8 3 + 0 ∙ 8 2 + 1 ∙ 8 1 + 0 ∙ 8 0 = 1 ∙ 1073741824 + 0 ∙ 134217728 + 1 ∙ 16777216 + 0 ∙ 2097152 + 1 ∙ 262144 + 1 ∙ 32768 + 1 ∙ 4096 + 1 ∙ 512 + 0 ∙ 64 + 1 ∙ 8 + 0 ∙ 1 = 1073741824 + 0 + 16777216 + 0 + 262144 + 32768 + 4096 + 512 + 0 + 8 + 0 = 109081856810
2. Полученное число 1090818568 переведем из десятичной системы счисления в шестнадцатеричную. Для этого, осуществим последовательное деление на 16, до тех пор пока остаток не будет меньше чем 16.
— | 1090818568 | 16 | ||
1090818560 | — | 68176160 | 16 | |
8 | 68176160 | — | 4261010 | 16 |
0 | 4261008 | — | 266313 | 16 |
2 | 266304 | — | 16644 | 16 |
9 | 16640 | — | 1040 | 16 |
4 | 1040 | — | 65 | 16 |
0 | 64 | 4 | ||
1 |
Полученные остатки записываем в обратном порядке, таким образом:
Ответ: 101011110108 = 4104920816.
Перевести число 123459AB58DC из шестнадцатеричной системы в восьмеричную
Задача: перевести число 123459AB58DC из шестнадцатеричной в восьмеричную систему счисления.
Для перевода 123459AB58DC из шестнадцатеричной в восьмеричную систему счисления, воспользуемся следующим алгоритмом:
1. Для перевода числа 123459AB58DC в десятичную систему воспользуемся формулой:
123459AB58DC16=1 ∙ 16 11 + 2 ∙ 16 10 + 3 ∙ 16 9 + 4 ∙ 16 8 + 5 ∙ 16 7 + 9 ∙ 16 6 + A ∙ 16 5 + B ∙ 16 4 + 5 ∙ 16 3 + 8 ∙ 16 2 + D ∙ 16 1 + C ∙ 16 0 = 1 ∙ 17592186044416 + 2 ∙ 1099511627776 + 3 ∙ 68719476736 + 4 ∙ 4294967296 + 5 ∙ 268435456 + 9 ∙ 16777216 + 10 ∙ 1048576 + 11 ∙ 65536 + 5 ∙ 4096 + 8 ∙ 256 + 13 ∙ 16 + 12 ∙ 1 = 17592186044416 + 2199023255552 + 206158430208 + 17179869184 + 1342177280 + 150994944 + 10485760 + 720896 + 20480 + 2048 + 208 + 12 = 2001605200098810
2. Полученное число 20016052000988 переведем из десятичной системы счисления в восьмеричную. Для этого, осуществим последовательное деление на 8, до тех пор пока остаток не будет меньше чем 8.
— | 20016052000988 | 8 | ||
20016052000984 | — | 2502006500123 | 8 | |
4 | 2502006500120 | — | 312750812515 | 8 |
3 | 312750812512 | — | 39093851564 | 8 |
3 | 39093851560 | — | 4886731445 | 8 |
4 | 4886731440 | — | 610841430 | 8 |
5 | 610841424 | — | 76355178 | 8 |
6 | 76355176 | — | 9544397 | 8 |
2 | 9544392 | — | 1193049 | 8 |
5 | 1193048 | — | 149131 | 8 |
1 | 149128 | — | 18641 | 8 |
3 | 18640 | — | 2330 | 8 |
1 | 2328 | — | 291 | 8 |
2 | 288 | — | 36 | 8 |
3 | 32 | 4 | ||
4 |
Полученные остатки записываем в обратном порядке, таким образом:
Ответ: 123459AB58DC16 = 4432131526543348.
Перевод чисел из одной системы счисления в другую
Данный конвертер переводит числа между наиболее популярными системами счисления: десятичной, двоичной, восьмеричной, шестнадцатеричной.
Существуют и другие системы счисления, но мы не стали включать их в конвертер из-за низкой популярности.
Для указания системы счисления при записи числа используется нижний индекс, который ставится после числа:
20010 = 110010002 = 3108 = C816
Кратко об основных системах счисления
Десятичная система счисления. Используется в повседневной жизни и является самой распространенной. Все числа, которые нас окружают представлены в этой системе. В каждом разряде такого числа может использоваться только одна цифра от 0 до 9.
Двоичная система счисления. Используется в вычислительной технике. Для записи числа используются цифры 0 и 1.
Восьмеричная система счисления. Также иногда применяется в цифровой технике. Для записи числа используются цифры от 0 до 7.
Перевод в десятичную систему счисления
Перевод из десятичной системы счисления в другие
Делим десятичное число на основание системы, в которую хотим перевести и записываем остатки от деления. Запишем полученные остатки в обратном порядке и получим искомое число.
Переведем число 37510 в восьмеричную систему:
Перевод из двоичной системы в восьмеричную
Так же как и в первом способе разбиваем число на группы. Но вместо преобразований в скобках просто заменим полученные группы (триады) на соответствующие цифры восьмеричной системы, используя таблицу триад:
Перевод из двоичной системы в шестнадцатеричную
Также как и в первом способе разбиваем число на группы по 4 цифры. Заменим полученные группы (тетрады) на соответствующие цифры шестнадцатеричной системы, используя таблицу тетрад:
Тетрада | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Цифра | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
Перевод из восьмеричной системы в двоичную
Каждый разряд восьмеричного числа будем делить на 2 и записывать остатки в обратном порядке, формируя группы по 3 разряда двоичного числа. Если в группе получилось меньше 3 разрядов, тогда дополняем нулями. Записываем все группы по порядку, отбрасываем ведущие нули, если имеются, и получаем двоичное число.
Используем таблицу триад:
Каждую цифру исходного восьмеричного числа заменяется на соответствующие триады. Ведущие нули самой первой триады отбрасываются.
Перевод из шестнадцатеричной системы в двоичную
Аналогично переводу из восьмеричной в двоичную, только группы по 4 разряда.
Используем таблицу тетрад:
Цифра | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Тетрада | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
Каждую цифру исходного числа заменяется на соответствующие тетрады. Ведущие нули самой первой тетрады отбрасываются.
Перевод из восьмеричной системы в шестнадцатеричную и наоборот
Такую конвертацию можно осуществить через промежуточное десятичное или двоичное число. То есть исходное число сначала перевести в десятичное (или двоичное), и затем полученный результат перевести в конечную систему счисления.
Перевести число 100001111.2 из восьмеричной системы в шестнадцатеричную
Задача: перевести число 100001111.2 из восьмеричной в шестнадцатеричную систему счисления.
Для перевода 100001111.2 из восьмеричной в шестнадцатеричную систему счисления, воспользуемся следующим алгоритмом:
1. Для перевода числа 100001111.2 в десятичную систему воспользуемся формулой:
2. Полученное число 16777801.25 переведем из десятичной системы счисления в шестнадцатеричную. Т.к. полученное число содержит дробную часть, нам потребуется перевести вначале целую часть, а затем дробную. Таким образом необходимо:
2.1 Для того, чтобы перевести число 16777801 из десятичной системы счисления в шестнадцатеричную, необходимо осуществить последовательное деление на 16, до тех пор пока остаток не будет меньше чем 16.
— | 16777801 | 16 | ||
16777792 | — | 1048612 | 16 | |
9 | 1048608 | — | 65538 | 16 |
4 | 65536 | — | 4096 | 16 |
2 | 4096 | — | 256 | 16 |
0 | 256 | — | 16 | 16 |
0 | 16 | 1 | ||
0 |
Полученные остатки записываем в обратном порядке, таким образом:
2.2 Для перевода десятичной дроби 0.25 в шестнадцатеричную систему, необходимо выполнить последовательное умножение дроби на 16, до тех пор, пока дробная часть не станет равной 0 или пока не будет достигнута заданная точность вычисления. Получаем:
Ответом станет прямая последовательность целых частей произведения. Т.е.
2.3. Осталось соединить переведенные части, таким образом: