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

В связи с использованием в ЭВМ различных систем счисления, возникает

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

вует несколько правил перевода чисел.

Чтобы вывести правило перевода целых чисел, воспользуемся тем очевид-

ным фактом, что, если числа А и q есть целые положительные, то всегда суще- ствует единственное (неотрицательное) целое число r, меньшее, чем q, и един-

ственное число S, такие, что


A=S+ r,

q             q


0 < r < q.


Например, А=5, q=3, тогда

A = 5 = 1 + 2 , т.е S = 1, r = *.

q3                    3

Используем это обстоятельство для перевода целого числа с основанием р,

например Ар, в его эквивалент Аq с основанием q. Другими словами, мы хотим определить неотрицательные числа а0, а1,…,аn, каждое из которых меньше, чем

q так, чтобы

Аpn·*n+…+а1·q10·q0*.

Заметим, что

В связи с использованием в ЭВМ различных систем счисления, возникает

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

вует несколько правил перевода чисел.

Чтобы вывести правило перевода целых чисел, воспользуемся тем очевид-

ным фактом, что, если числа А и q есть целые положительные, то всегда суще- ствует единственное (неотрицательное) целое число r, меньшее, чем q, и един-

ственное число S, такие, что


A=S+ r,

q             q


0 < r < q.


Например, А=5, q=3, тогда

A = 5 = 1 + 2 , т.е S = 1, r = *.

q3                    3

Используем это обстоятельство для перевода целого числа с основанием р,

например Ар, в его эквивалент Аq с основанием q. Другими словами, мы хотим определить неотрицательные числа а0, а1,…,аn, каждое из которых меньше, чем

q так, чтобы

Аpn·*n+…+а1·q10·q0*.

Заметим, что

 

Aq

= an  qn-1 + K + a2  q1 + a0 .

q                                                   q

|¬ целая часть ®|¬ дробная часть

С другой стороны, согласно выше сформулированному утверждению, для

любой пары целых положительных чисел Ар и * всегда найдется единственное

S0 и r0 такие, что

 

Aq

= S0 + r0 .

q                q

Поскольку и частное и остаток единственны, то, приравнивая целые и

дробные части, получим:

а0=r0;             S0=a*·qn-1+…+а1q0,

т.е. младшая искомая цифра равна остатку от деления Ар на q. Деля S* на q, и,

используя предыдущий результат, получим:

*0 = a qn-2 + * + a q0 + a1 = S + r1 ,

n                          2                        1

q                                                  q               q

откуда а1=** и т.д. до получения частного, которое меньше нового основания.

Это частное и будет последней (старшей) цифрой искомого числа.

 

 

 

В самом деле, пусть А13q32q21q10q0, тогда

A1 = a *2 + a q1 + a q0 + a* ;

3            2           1

*                                             q

|            A2                  |

A2 = a q1 + * q0 + a1 ;

3           2

q                                 q

|         A3          |

A3 = * q0 + a2 .

3

q                    *

В связи с этим можно сформулировать следующее правило перевода целых

чисел.

Целое число в новой системе счисления можно получить в результате

последовательного деления исходного числа, а затем и частных, на новое основание системы до получения частного, которое меньше нового основа- ния. Из этого частного и всех полученных остатков составится число в новой системе: последнее частное будет первой цифрой числа, последний

остаток - второй цифрой, и т.д. Деление выполняется по правилам той

системы счисления, в которой записано исходное число. Делитель (основа-

ние новой системы) записывается цифрами новой системы.

На практике иногда поступают так: на бумаге проводят справа от исходно-

го числа вертикальную черту, под самим числом записывают получающиесячастные, а справа от черты друг под другом остатки. Тогда после окончания

процесса полученное двоичное число переписывают снизу вверх, например,

десятичное число *5 в двоичную систему переводится так:

3* 1

17 1

80

40

20

11                      В результате получим 3510=1000112.

Примеры:

1) Числа 118 и *8 перевести из десятичной системы счисления в двоичную:


_118 | 2

118 _59 | 2

0 58 _29 | 2

* 28 _14 | 2

1 14 _7 | 2

0 6 _3 | 2

121

1


_7* | 2

78 _3* | 2

0 38 _19 | 2

1 18 _9 | 2

1 8 _4 | 2

1 4 _2 | 2

0 21

0


Итак, 11810=11101*02; *810=10011102.

 

 

 

2) Числа 118 и 78 из десятичной системы счисления перевести в шестнадца-

теричную:

_118| 16                              _78 | 16

1*2 7                                   64 4

6                                         1410=E16

Итак, 1181*=76*6; *810=4Е16.

 

*) Число 11101*0 из двоичной системы счисления перевести в десятичную:

_1*1011*| 101*

1010 _1011| 1010

_10*11 1010 1

1010           1

_1001*

1010

10*02=81*

 

Итак, **101102=11810, так как 12=11*, а 100*2=**0.

 

4) Число 7* из шестнадцатеричной системы счисления перевести в десятич-

ную:

_76 | А

68 | А

8 А1