Скачиваний:
23
Добавлен:
11.05.2015
Размер:
998.91 Кб
Скачать

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

Под задачей перевода понимается задача нахождения цифр числа Х, заданного в системе счисления с основанием P, в системе счисления с основанием Q.

Перевод чисел из одной системы в другую основан на том, что значение числа не зависит от формы его представления. Число пять пальцев можно записать по разному, но количество пальцев останется равным пяти.

Пусть есть одна система с основанием Р, а другая с основанием Q. Число Х можно представить по формуле полинома (2.2):

X=Am Pm +A m-1Pm-1 +...+A 1P1+A0 P 0+A-1 P-1 +...A-n P-n , (2.4)

Х=Bk Qk +B k-1Qk-1 +...+B 1Q1+B0 Q 0 +B-1 Q-1 +...B-j Q-j. (2.5)

Итак, мы имеем два уравнения со многими неизвестными, т.е. они не имеют аналитического решения.

Однако если мы знаем, как представить каждую базисную цифру системы Р в системе Q и умеем пользоваться арифметикой системы Q, то вычислить значение числа не сложно по формуле (2.4).

Перевод чисел из произвольной системы в десятичную

Удобно переводить числа из произвольной системы в десятичную по формуле полинома (2.4).

В этом случае используется разложение числа Х по степеням основания, в котором базовые значения цифр и степени основания представляют в десятичной системе и выполняют все действия в этой же системе.

Пример.

1. Перевести число 11001.1(2) из двоичной системы в десятичную.

11001.1(2)=124 +123 +022 +021 +120 +12-1 =16+8+1+1/2=25.5(10).

2. Перевести число 123(8) из восьмеричной системы в десятичную.

123(8)= 182 +281+30 =64+16+3=83(10).

3. Перевести число 20А.0С(2) из двоичной системы в десятичную.

20A.0C(16)=2162 +0161 +A160 +016-1 +C16-2 =

=2256+016+101+01/16+121/256=522.046875(10).

Перевод чисел из десятичной системы в произвольную

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

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

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

Пусть задано Х — целое число в системе P. Требуется найти цифры этого числа в системе счисления с основанием (10).

Алгоритм перевода целых чисел основан на делении целого числа на основание системы:

  1. Исходное число X=Am Pm +A m-1Pm-1 +...+A 1P1+A0 P 0 делим на основание Р:

X/P= Am Pm-1 +A m-1Pm-2 +...+A 1P0+ A0 /P.

  1. Разделяем результат на целую и дробную части:

Целая [X/P]= Am Pm-1 +A m-1Pm-2 +...+A 1P0.

Дробная {X/P}= A0 /P.

Т.к. любая базовая цифра меньше основания системы, то A0/P >=0.

  1. Находим А0:

А0= {X/P} P= остатку от деления.

  1. Целую часть снова делим на основание и получаем A1:

[X/P]/P= Am Pm-2 +A m-1Pm-3 +...+A0+A 1P-1.

  1. Повторяем п.4, пока целая часть не станет равной 0.

На каждой итерации остаток от деления представляет собой коэффициент полинома Ai.

  1. Записываем остатки и последнее частное в порядке, ОБРАТНОМ их получению в НОВОЙ системе счисления.

Пример.

1. Перевести число 13 из десятичной системы в двоичную.

13/2= 6, остаток 1  A0;

6/2= 3, остаток 0  A1;

3/2= 1, остаток 1  A2;

1/ 2=0, остаток 1  A3.

Запишем результат:

13(10)=1101(2).

2. Перевести число 13 из десятичной системы в восьмеричную.

13/8= 1, остаток 5  A0;

1/8= 0, остаток 1  A1.

Запишем результат:

13(10)= 15(8).

3. Перевести число 13 из десятичной системы в шестнадцатеричную

13/16= 0, остаток 13  A0.

Запишем результат:

13(10)= 13(16).

Особый случай возникает, если между основаниями систем существует соотношение:

P= Qn . (2.6)

В этом случае каждую базисную цифру системы Р можно представить n-разрядным числом в системе Q.

Для двоичной и восьмеричной системы справедливо:

23 =8.

Каждой восьмеричной цифре соответствует двоичный код из 3-х цифр. Такой код называется ТРИАДОЙ. Запишем триады всех восьмеричных цифр:

0 – 000, 4 – 100,

1 – 001, 5 – 101,

2 – 010, 6 – 110,

3 – 011, 7 – 111.

Пример.

  1. Перевести число 13 из восьмеричной системы в двоичную.

13(8)= 001 011(2).

  1. Перевести число 10100101100101 из двоичной системы в восьмеричную.

10 100 101 100 101(2)= 24545(8).

  1. Перевести число 13 шестнадцатеричной системы в двоичную.

13(16)= 0001 0011(2).

  1. Перевести число 10100101100101 из двоичной системы в шестнадцатеричную.

10 1001 0110 0101(2)= 2965(16).

Перевод правильных дробей

Пусть X(p) — правильная дробь в системе счисления с основанием P=10. Требуется найти цифры этого числа в системе счисления с основанием Q.

Воспользуемся полиномом (2.4), но будем использовать только дробную часть.

Х=0 Q 0 +B-1 Q-1 +B-2 Q-2 +...B-j Q-j.

Значение X представляет собой дробную часть, т.е. X= {X}.

Умножим Х на основание системы Q:

ХQ=0 Q 1 +B-1 Q0 +B-2 Q-1 +...B-j Q-j+1 =[X]+ {X} .

Подчеркнутая часть представляет собой целое число (возможно 0), т.к. все базисные числа целые, а Q0= 1. Следовательно, целая часть, полученная после умножения, есть первая цифра искомого числа. Далее выделяем дробную часть и снова умножаем ее на основание системы.

Процесс умножения заканчивается в двух случаях:

  1. когда на каком-то шаге получится дробная часть, равная 0. В этом случае дробь переводится в новую систему ТОЧНО;

  2. дроби в новой системе счисления соответствует БЕСКОНЕЧНАЯ дробь. В этом случае процесс заканчивают получением наперед заданного случае количества цифр. Часто выделяется период бесконечной дроби.

Пример.

  1. Перевести число 0.25 из десятичной системы в двоичную.

0.25 0.50

2 2

0.50 1.00

0. 0 1, т.е. число 0.25(10)= 0.01(2).

  1. Перевести число 0.25 из десятичной системы в восьмеричную.

0.25

8

2.0

0.2, т.е. число 0.25(10)= 0.2(8)

  1. Перевести число 0.3 из десятичной системы в шестнадцатеричную.

0.3 0.8 0.8

16 1616

4.8 12.8 12.8

0. 4 С С ….., т.е. число 0.3(10)= 0.ССС…..(16)

Соседние файлы в папке Введение в вычислительную технику.