Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
45
Добавлен:
02.05.2014
Размер:
449.02 Кб
Скачать

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

Наиболее общий алгоритм перевода числа X(k1) с основанием k1 в число X(k2) с основанием k2 выполняется в следующей последовательности:

- число X(k1) представляют в виде степенного ряда;

- заменяют цифры хi с основанием k1 их k2-ми представлениями;

- выполняют все операции сложения, умножения, возведение в степень в k2-й СС;

- с учетом точности определяют число целых и дробных цифр в числе X(k2), округляют и представляют по необходимости X(k2) в виде степенного ряда.

Рассмотрим общий алгоритм перевода чисел на примере числа X(2)= 1001,101, которое переведем в Х(10) .

1001,101 = 123 + 022 + 021 + 120 + 12-1 + 02-2 + 12-3 =

=8 +1 + 1/2 + 1/8 = 9,625(10) .

Однако применение этого алгоритма в случае k1 > k2 связано с громоздкими вычислениями, например, Х(10) = 36 переведем в Х(2) .

36(10) = 3101 + 6100 = (0011)(1010)1 + (0110)(1010)0 = 100100(2) .

Поэтому для перевода числа из 10 СС в 2 СС при k1 > k2 целую и дробную часть переводят отдельно по упрощенным алгоритмам. Для перевода це­лой части числа X(k1) отделяют у него целую часть Хц (k1) и делят его на основание k2 в k1-ой СС. В результате деления получают остаток О0 и ча­стное Ч1. Если частное Ч1k2, его делят вновь Ч1/k2. Получают остаток О1 и частное Ч2. Деление частного продолжают до тех пор, пока на i-ом шаге не будет получен остаток Оi-1 и частное Чi < k2. Последнее частное прини­мается за цифру хi, а цифры xi-1, …, x0 определяются соответствующими остатками Оi-1, …, О1, О0. Располагая цифры в порядке Чi Оi-1 … О0, полу­чают целую часть числа Х(k2).

Для определения дробной части числа Х(k2) берут дробную часть Хд (k1) числа Х(k1) и умножают ее на основание k2 по правилам k1 СС. В результате первого умножения получают целую часть произведения Ц1 и дробную часть D1. На втором шаге вновь берут дробную часть 0, D1 и умножают на основание k2. Умножение дробных частей продолжают до n-го шага Цn, Dn, пока не будет достигнута необходимая точность представления дроби. Приравнивая x-i = Цi получают значение дроби Хд (k2) =, x-1 x-2x-n. Рассмотрим алгоритм раздельного перевода целой и дробной части числа на примере. Пусть Х(10) = 20,4 необходимо перевести в двоичную СС. То­гда процесс перевода числа можно показать как деление (слева) и умножение (справа) по шагам:

1)

20

2

20

10 = Ч1

0,4  2 = 0,8 (Ц 1 = 0);

О0 = 0

2)

10/2 = 5 (Ч2 = 5, О1 = 0)

0,8  2 = 1,6 (Ц 2 = 1);

3)

5/2 = 2 (Ч3 = 2, О2 = 1)

0,6  2 = 1,2 (Ц 3 = 1);

4)

2/2 = 1 (Ч4 = 1, О3 = 0)

0,2  2 = 0,4 (Ц 4 = 0).

При переводе дробной части числа 20,4 умножение может быть продол­жено на любое число шагов, т. к. величину 0,4(10) нельзя точно представить в 2 СС. Ограничиваясь числом шагов, получим

Хц (k2)= х4 х3 х2 х1 х0, = Ч4 О3 О2 О1 О0, = 10100,

Хд (k2)=, х -1 х -2 х -3 х -4 =, Ц 1 Ц 2 Ц 3 Ц 4 =, 0110 …

20,4(10)  10100,0110(2)

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

123,02(4) =

1

2

3,

0

2(4)

= 11011,001 (2)

01

10

11,

00

10(2)

621,34(8) =

6

2

1,

3

4

= 110010001,0111(2)

110

010

001,

011

100

9Е,1D(16) =

9

E,

1

D

= 10011110,00011101(2).

1001

1110,

0001

1101

При переводе из двоичной СС в четверичную, восьмеричную, шестнадцатеричную СС цифры двоичной системы соответ­ственно объединяются в группы по две, три, четыре цифры слева и справа от запятой, а затем эти группы заменяются на эквивалентные цифры четверичной, восьмеричной, шестнадцатеричной СС. Например, число 1101101011,11(2) будет преобразовано

3

1

2

2

3,

3

= 31223,3(4);

11

01

10

10

11,

11

1

5

5

3,

6

= 1553,6(8);

001

101

101

011,

110

3

6

В,

С

0

= 36В,С(16).

0011

0110

1011,

1100

0000

Соседние файлы в папке Дубинин Н.М. Организация ЭВМ и Систем