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


Дата добавления: 2014-11-24 | Просмотров: 1680


<== предыдущая страница | Следующая страница ==>

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

Рассмотрим таблицу соответствия систем счисления для первых 17 чисел (курсивом выделены цифры в системах счисления)

Таблица 1.1. – Соответствие чисел в различных системах счисления

десятичная двоичная восьмеричная шестнадцатеричная
A
B
C
D
E
F

 

Запись произвольного числа x в P-ичной позиционной системе счисления основывается на представлении этого числа в виде многочлена

x = anPn + an-1Pn-1 + ... + a1P1 + a0P0 + a-1P-1 + ... + a-mP-m (1.7)

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

Примеры:

(десятичный индекс внизу указывает основание системы счисления):

23,43(10) = 2*101 + 3*100 + 4*10-1 + 3*10-2

(в данном примере знак «3» в одном случае означает число единиц, а в другом – число сотых долей единицы);

692(10) = 6*102 + 9*101 + 2.

(«Шестьсот девяносто два» с формальной точки зрения представляется в виде «шесть умножить на десять в степени два, плюс девять умножить на десять в степени один, плюс два»).

1101(2)= 1*23 + 1*22+0*21+ 1*20;

112(3) = l*32+ 1*31 +2*30;

341,5(8) =3*82+ 4*81 +1*80 +5*8-1;

A1F4(16) = A*162 + 1*161 + F*160 + 4*16-1.

Пример:

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

а) 1000001(2).

1000001(2)=1× 26+0× 25+0× 24+0× 23+0× 22+ 0× 21+1× 20 = 64+1=65(10).

Замечание. Очевидно, что если в каком-либо разряде стоит нуль, то соответствующее слагаемое можно опускать.

 

б) 1000011111,0101(2).

1000011111,0101(2)=1×29 + 1×24 + 1×23 + 1×22 + 1×21 + 1×20 + 1×2-2 + 1×2-4 = 512 + 16 + 8 + 4 + 2 + 1 + + 0,25 + 0,0625 = 543,3125(10).

в) 1216,04(8).

1216,04(8) = 1×83+2×82+1×81+6×80+4× 8-2 = 512+128+8+6+0,0625 = 654,0625(10).

г) 29A,5(16).

29A,5(16) = 2×162+9×161+10×160+5×16-1 = 512+144+10+0,3125 = 656,3125(10).

 

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

Целая и дробная части переводятся порознь.

1) если переводится целая часть числа, то она делится на P, после чего запоминается остаток от деления. Полученное частное вновь делится на P, остаток запоминается. Процедура продолжается до тех пор, пока частное не станет равным нулю. Остатки от деления на P выписываются в порядке, обратном их получению;

2) если переводится дробная часть числа, то она умножается на P, после чего целая часть запоминается и отбрасывается. Вновь полученная дробная часть умножается на P и т.д. Процедура продолжается до тех пор, пока дробная часть не станет равной нулю. Целые части выписываются после запятой в порядке их получения. Результатом может быть либо конечная, либо периодическая дробь в системе счисления с основанием P. Поэтому, когда дробь является периодической, приходится обрывать умножение на каком-либо шаге и довольствоваться приближенной записью исходного числа в системе с основанием P.

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

В ДВОИЧНУЮ СИСТЕМУ СЧИСЛЕНИЯ:

Для целой части: Для дробной части:
  остаток от деления
29 : 2 = 14
14 : 2 = 7
7 : 2 = 3
3 : 2 = 1
1 : 2 = 0

 

0,73 • 2 = 1,46 (целая часть 1), 0,46 • 2 = 0,92 (целая часть 0 ), 0,92 • 2 = 1,84 (целая часть 1), 0,84 • 2 = 1,68 (целая часть 1) и т.д.  

 

Таким образом

29,73(10)=11101,1011…(2).

 

В ВОСЬМЕРИЧНУЮ СИСТЕМУ СЧИСЛЕНИЯ:

Для целой части: Для дробной части:
  остаток от деления
29 : 8 = 3
3 : 8 = 0

 

0,73 • 8 = 5,84 (целая часть 5), 0,84 • 8 = 6,72 (целая часть 6 ), 0,72 • 8 = 5,76 (целая часть 5), 0,76 • 8 = 6,08 (целая часть 6) и т.д.

Таким образом

29,73(10)=35,5656…(8).

 

В ШЕСТНАДЦАТЕРИЧНУЮ СИСТЕМУ СЧИСЛЕНИЯ:

Для целой части: Для дробной части:
  остаток от деления
29 : 16 = 1 13 (по таблице – это D)
1 : 16 = 0

 

0,73 • 16 = 11,68 (целая часть 11, т.е. B), 0,68 • 16 = 10,88 (целая часть 10, т.е. A), 0,88 • 16 = 14,08 (целая часть 14, т.е. E), 0,08 • 16 = 1,28 (целая часть 1) и т.д.

Таким образом

29,73(10)=1D,BAE1…(16).


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |

При использовании материала ссылка на сайт Конспекта.Нет обязательна! (0.06 сек.)