Лекция
План
Вспомним
таблицу степеней чисел 2, 8, 16:
|
Степени
числа 16 |
Степени числа 8 |
Степени числа 2 |
|
161
= 16 |
81 = 8 |
21 = 2 |
|
162
= 256 |
82 = 64 |
22 = 4 |
|
163
= 4096 |
83 = 512 |
23 = 8 |
|
164
= 65536 |
84 = 4096 |
24 = 16 |
|
165
= 1048576 |
85 = 32768 |
25 = 32 |
|
|
|
26 = 64 |
|
|
|
27 = 128 |
|
|
|
28 = 256 |
|
|
|
29 = 512 |
|
|
|
210 = 1024 |
|
Любое число в степени 0 равно 1 а0=1 |
Алгоритм
перевода чисел из одной системы счисления в другую ПСС
Из десятичной системы счисления:
Правило
1. Для того, чтобы перевести число
из десятичной системы счисления, в любую другую, нужно выполнять целочисленное
деление исходного числа на основание той системы счисления, в которую нужно
перевести число. При этом важен остаток от деления и частное. Частное нужно делить
на основание до тех пор, пока частное станет меньше основания. После этого все
остатки нужно выписать в обратном порядке - это и будет число в новой системе
счисления.
Например,
перевод - числа 25 из десятичной системы счисления в двоичную будет выглядеть
следующим образом:
Выписав
остатки в обратном порядке, получим 2510=110012.
Перевод из
десятичной системы счисления в любую другую систему счисления производится по
абсолютно точно таким же правилам. Вот пример перевода 39310 в шестнадцатеричную
систему счисления:
Выписав
остатки в обратном порядке, получим 39310=18916.
Нужно
понимать, что остатки получаются в десятичной системе счисления. При делении на
16 могут появиться остатки не только от 0 до 9, но также и остатки от 10 до 15.
Каждый остаток - это всегда ровно одна цифра в той системе счисления, в которую
осуществляется перевод.
Например,
если при переводе в шестнадцатеричную систему счисления Вы получили такие
остатки (выписаны в порядке, как они должны быть записаны в числе): 10, 3, 15,
7, то в шестнадцатеричной системе счисления этой последовательности остатков
будет соответствовать число A3F716 (некоторые по ошибке записывают
число как 10315716 - понято же, что это совсем другое число, и что
если так делать, то получится, что ни в каком шестнадцатеричном числе не
появится цифры от A до F).
Примеры
17810 =
101100102 6310
= 001111112 810
= 000010002
20910
=110100012 2510
= 000110012 24110
= 111100012.
5678 = 37510 48610
= 7468 9810
= 1428
49510 = 1EF16 4D86B16 = 31754710 51216
= 129810 A516 = 16510
Правило
2. При переводе дробной части, в
отличие от перевода целой части – нужно не делить, а умножать на основание той системы
счисления, в которую мы переводим. При этом каждый раз отбрасываются целые
части, а дробные части – снова умножаются. Собрав целые части в том порядке,
как они были получены – получается дробная часть числа в нужной системе
счисления.
Одна
операция умножения даёт ровно один дополнительный знак в системе счисления, в
которую осуществляется перевод.
При
этом существует два условия завершения процесса:
1)
в результате очередного умножения Вы получили ноль в дробной части. Понятно,
что дальше этот ноль сколько ни умножай – он всё равно останется нулём. Это
означает, что число перевелось из десятичной системы счисления в нужную точно.
2)
не все числа возможно перевести точно. В таком случае обычно переводят с
некоторой точностью. При этом сначала определяют, сколько знаков после запятой
будет нужно – именно такое количество раз и нужно будет выполнить операцию
умножения.
Вот
пример перевода числа 0.3910 в двоичную систему счисления. Точность
– 8 разрядов (в данном случае точность перевода выбрана произвольно):
Если
выписать целые части в прямом порядке, то получим 0.3910=0.011000112.
Самый
первый ноль (на рисунке перечёркнут синим) выписывать не нужно - так как он
относится не к дробной части, а к целой. Некоторые по ошибке записывают этот
ноль после запятой, когда выписывают результат.
Вот
так будет выглядеть перевод числа 0.3910 в шестнадцатеричную систему
счисления. Точность - 8 разрядов в данном случае точность снова выбрана
произвольно:
Если
выписать целые части в прямом порядке, то получим 0.3910=0.63D700A316.
При
этом Вы, наверное, заметили, что целые части при умножении получаются в
десятичной системе счисления. Эти целые части, полученные при переводе дробной
части числа следует интерпретировать точно так же, как и остатки при переводе
целой части числа. То есть, если при переводе в шестнадцатеричную систему
счисления целые части получились в таком порядке: 2, 13, 8, 10, то
соответствующее число будет равно 0.2D8A16 (а не 0.21381016).
0,812510 = 0,11012 0,7510=0,112 0,562510
= 0,10012
0,5210 = 0,412178 (5 разрядов) 0,012510=0,006318 0,602510 =
0,4643658 (6 разр)
0,012510 = 0,00666616 (8
разрядов) 0,2810=0,47AE116 (5 разр) 0,51510 = 0,83D70A16 (8 разр)
Правило
3. Чтобы выполнить перевод числа с
целой и дробной частью, нужно отдельно перевести целую часть, а отдельно –
дробную, и поэтом эти две части записать вместе.
Например,
25.3910=11001.011000112
124,2510 =
174,28 124,2510
= 7C,2616
Правило 4. Для перевода в восьмеричную систему нужно разбить двоичное число на
группы по 3 цифры (триады) справа
налево. В последней (самой левой) группе вместо недостающих цифр поставить
слева нули.
Способ 1:
Для
каждой полученной группы произвести умножение каждого разряда на 2n,
где n - номер разряда.
11012
= (001) (101) = (0*22 + 0*21 + 1*20) (1*22
+ 0*21 + 1*20) = (0+0+1) (4+0+1) = (1) (5) = 158
Способ 2:
Заменить
триады на соответствующие цифры восьмеричной системы, используя таблицу триад:
|
Триада |
000 |
001 |
010 |
011 |
100 |
101 |
110 |
111 |
|
Цифра |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 111 0102
= (010) (111) (010) = 2728
111 100 1102 = 111 100 110 = 7468
11 000 111 0112 = (011) (000) (111) (011) = 30738
1
101 011,001 012 = (001) (101) (011),(001)(010) = 153,128
11
100 111,112 = (011) (100) (111),(110) = 347,68
Правило 5. Разбиваем число на группы по 4 цифры (тетрады) справа
налево. Последнюю (левую) группу дополним при необходимости нулями.
Способ 1:
Внутри
каждой полученной группы произведем умножение каждой цифры на 2n,
где n - номер разряда, и сложим результаты.
1 10102
= (0001) (1010) = (0*23 + 0*22 + 0*21 + 1*20)
(1*23 + 0*22 + 1*21 + 0*20) =
(0+0+0+1) (8+0+2+0) = (1) (10) = 1A16
Способ 2:
Заменим
тетрады на соответствующие цифры шестнадцатеричной
системы, используя таблицу тетрад:
|
Тетрада |
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 |
1 0111 11002
= (0001) (0111) (1100) = 17C16
1 1110 01102 = (0001) (1110) (0110) = 1E616
110 0011 10112 = (0110) (0011) (1011) = 63B16
0100
1010 1100 0011 01012 = 4АС3516
011 11112 = (0011) (1111) = 3F6
Способ 1:
Каждый
разряд восьмеричного числа будем делить на 2 и записывать остатки в обратном порядке,
формируя группы по 3 разряда двоичного числа. Если в группе получилось меньше 3
разрядов, тогда дополняем нулями. Записываем все группы по порядку, отбрасываем
ведущие нули, если имеются, и получаем двоичное число.
Возьмем
число 438.
Делим
последовательно 4 на 2 и получаем остатки 0,0,1. Записываем их в обратном
порядке. Получаем 100. Делим последовательно 3 на 2 и получаем остатки 1,1.
Записываем их в обратном порядке и дополняем ведущими нулями до трех разрядов.
Получаем 011. Записываем вместе и получаем 100 0112
Способ 2:
Используем
таблицу триад:
|
Триада |
000 |
001 |
010 |
011 |
100 |
101 |
110 |
111 |
|
Цифра |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Правило
6. Каждую цифру исходного восьмеричного
числа заменяется на соответствующие триады. Ведущие нули самой первой триады
отбрасываются.
3518
= (011) (101) (001) = 0111010012 = 111010012
Способ 1:
Аналогично
переводу из восьмеричной в двоичную, только группы по 4 разряда.
Способ 2:
Используем
таблицу тетрад:
|
Тетрада |
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 |
Правило
7. Каждую цифру исходного числа
заменяется на соответствующие тетрады. Ведущие нули
самой первой тетрады отбрасываются.
D816
= (1101) (1000) = 110110002
2AC0F7416 = 0010 1010 1100 0000 1111 0111 0100 = 101010110000001111011101002
Такую
конвертацию можно осуществить через промежуточное десятичное или двоичное
число.
Правило
8. То есть исходное число сначала
перевести в десятичное (или двоичное), и затем полученный результат перевести в
конечную систему счисления.
Выполните
самостоятельно задания:
1.
Запишите
число в развернутой форме: 1110,0012.
2.
Выполните
перевод чисел из одной системы счисления в другую:
1.
437,4510
– в двоичную, восьмеричную, шестнадцатеричную системы счисления с точностью до
четырех знаков после запятой;
2.
101011110112
– в восьмеричную, десятичную, шестнадцатеричную системы счисления;
3.
617,48
– в двоичную, десятичную системы счисления;
4.
АС516
– в двоичную, восьмеричную, десятичную системы счисления.
1.
Запишите
число в развернутой форме: 10110,0112.
2.
Выполните
перевод чисел из одной системы счисления в другую:
1.
830,8610
– в двоичную, восьмеричную, шестнадцатеричную системы счисления с точностью до пяти
знаков после запятой;
2.
11001110102
– в восьмеричную, десятичную, шестнадцатеричную системы счисления;
3.
615,38
– в двоичную, десятичную системы счисления;
4.
82В16
– в двоичную, восьмеричную, десятичную системы счисления.