Перевод целых чисел
В связи с использованием в ЭВМ различных систем счисления, возникает
необходимость перевода чисел из одной системы счисления в другую. Сущест-
вует несколько правил перевода чисел.
Чтобы вывести правило перевода целых чисел, воспользуемся тем очевид-
ным фактом, что, если числа А и 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 так, чтобы
Аp=аn·*n+…+а1·q1+а0·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 так, чтобы
Аp=аn·*n+…+а1·q1+а0·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=** и т.д. до получения частного, которое меньше нового основания.
Это частное и будет последней (старшей) цифрой искомого числа.
В самом деле, пусть А1=а3q3+а2q2+а1q1+а0q0, тогда
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