USER-MASTER.ORG

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

Перевод чисел из q-той системы счисления в десятичную непосредственно исходит из полиномиального выражения конкретного числа.

Перевод целого десятичного числу в q-ую систему счисления происходит в два этапа: сначала переводится целая часть, затем дробная, после чего слева от точки записывается целая часть, а справа – дробная. Суть перевода состоит в последовательном делении десятичного числа и его частных на значение основы системы q. Деление выполняется, пока следующее частное не будет меньше чем основа q. Остаток, рассчитанный на последнем шаге, является старшей (первой) цифрой переведённого числа. Результатом перевода такого числа в q-тую систему счисления является запись последнего частного и всех остатков в обратном порядке. Например, переведение числа 133 из десятичной системы счисления в восьмеричную выполняется таким способом:

Результат: 13310 = 2058. Остатки от деления записаны в скобках после частных. Последнее частное является старшей цифрой восьмеричного числа, к которому дописываются оставшиеся остатки в порядке, обратном к порядку его вычисления.

Переведём то же самое число 133 в двоичную систему счисления:

Результат: 13310 = 100001012.

Переведение числа 133 до шестнадцатеричной системы счисления имеет вид:

133 : 16 = 8 (5)

Результат: 13310 = 8516.

Перевод десятичной дроби выполняется последовательным умножением дроби и дробных частей результатов на основу системы q. Умножение выполняется до тех пор, пока не будет найдена нулевая дробная часть или до вычисления числа с заданной точностью. Запись в прямом порядке всех целых частей произведения даёт изображение данной дроби в q-той системе счисления.

Для примера переведём десятичное число 0.125 поочерёдно к двоичной, восьмеричной и шестнадцатеричной системе счисления:

1) к двоичной:

0.125 ∙ 2 = 0.25;
0.25 ∙ 2 = 0.5;
0.5 ∙ 2 = 1

Результат: 0.12510 = 0.0012;

2) к восьмеричной:

0.125 ∙ 8 = 1

Результат: 0.12510 = 0.18;

3) к шестнадцатеричной:

0.125 ∙ 16 = 2

Результат: 0.12510 = 0.216.

А теперь приведём пример перевода десятичного числа с целой и дробной частями 122.6 к двоичной системе счисления с точностью в шесть значащих цифр дробной части.

Результат: 122.610 = 1111010.1001102.

Итак, при переводе целой части числа остатки, которые остаются в течение последовательного деления частных, являются цифрами целой части числа в новой системе счисления. Остаток, вычисленный на последнем шаге, является старшей (первой) цифрой переведённого числа. А при переведении дробной части числа целые части чисел, которые получают при умножении, не участвуют в следующих умножениях. Они являются цифрами дробной части результата. Значения первой целой части является первой цифрой после десятичной точки переведённого числа. Если при переводе дробной части получается периодическая дробь, то производят округление, руководствуясь заданной точностью вычислений.

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

1111010.1001102 = 1·26 + 1·25 + 1·24 + 1·23 + 0·22 + 1·21 + 0·20 + 1·2-1 + 0·2-2 + 0·2-3 + 1·2-4 + 1·2-5 + 0·2-6 = 64 + 32 + 16 + 8 + 2 + 0.5 + 0.0625 + 0.03125 = 122.59375 ≈ 122.6

Перевод десятичных чисел в восьмеричную систему счисления производится аналогично. Для примера переведём вышеприведённое число 122.6 и в восьмеричную систему счисления:

Результат: 122.610 = 172.4631468.

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

172.4631468 = 1∙82 + 7∙81 + 2∙80 + 4∙8-1 + 6∙8-2 + 3∙8-3 + 1∙8-4 + 4∙8-5 = 64 + 56 + 2 + 0.5 + 0.09375 + 0.0058598 + 0.00024414 + 0.00003052 ≈ 122.599884 ≈ 122.6

Соответствующий перевод десятичного числа 122 в шестнадцатеричную систему счисления производится таким способом:

Результат: 122.610 = 7A.999916.

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

7A.999916 = 7∙161 + 10+160 + 9∙16-1 + 9∙16-2 + 9∙16-3 + 9∙16-4 = 112 + 10 + 0.5625 + 0.03515325 + 0.0021972656 + 0.000137329 = 122.599987845 ≈ 122.6

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

Соответствие чисел разных систем счисления

Десятичные числаДвоичные числаВосьмеричные числаШестнадцатеричные числа
0.0625 0.0001 0.04 0.1
0.125 0.001 0.1 0.2
0.25 0.01 0.2 0.4
0.5 0.1 0.4 0.8
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10

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

2378 = 10 011 1112
5048 = 101 000 1002
145.268 = 001100101.010110 = 1100101.010112

Начальные и конечные незначащие нули можно опустить.

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

110001002 = 11 000 100 = 3048

1011.111012 = 001 011.111 010 = 13.728

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

3048 = 11 000 1002
401.048 = 100 000 001.000 12

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

1AF816 = 1 1010 1111 10002
14.2816 = 1 1010.0010 10112
11001000010112 = 1 1001 0000 1011 = 190B16
1011010.010112 = 101 1010.0101 1000 = 5A.5816

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

Приведем примеры всех возможных преобразований к представленным системам счисления для десятичного целого числа 263:

1) из десятичной в двоичную:

Результат: 26310 = 1000001112;

2) из двоичной в десятичную:

1000001112 = 1∙28+1∙22+1∙21+1∙20 = 256 + 4 + 2 + 1 = 26310

Результат: 1000001112 = 26310;

3) из десятичной в восьмеричную:

Результат: 26310 = 4078;

4) из восьмеричной в десятичную:

4078 = 4∙82 + 7∙80 = 256 + 7 = 26310

Результат: 4078 = 26310;

5) из десятичной в шестнадцатеричную:

Результат: 26310 = 10716;

6) из шестнадцатеричной в десятичную:

10716 = 1∙162 + 7∙160 = 256 + 7 = 26310

Результат: 10716 = 26310;

7) из шестнадцатеричной в двоичную:

Результат: 10716 = 1 0000 01112;

8) из двоичной в шестнадцатеричную:

Результат: 1000001112 = 0001 0000 0111 = 10716;

9) из восьмеричной в двоичную:

Результат: 4078 = 100 000 111 = 1000001112;

10) из двоичной в восьмеричную:

Результат: 1000001112 = 100 000 111 = 4078.

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

Защитный код
Обновить

Поиск