Перевод чисел из одной системы счисления в другую
При решении задач с помощью ЭВМ исходные данные обычно задаются в десятичной системе счисления; в этой же системе, как правило, нужно получать и окончательные результаты. Так как в современных ЭВМ данные кодируются в основном в двоичных кодах, то возникает задача перевода чисел из одной системы счисления в другую.
Ограничимся рассмотрением систем счисления, у которых базисными числами являются последовательные числа 0, 1, …Р-1, где Р – основание системы. Задача перевода заключается в следующем.
Пусть известна запись числа х в системе счисления с основанием Р:
рn рn-1… р1 р0 р-1 р-2...,
где рi – цифры P=ичной системы. Требуется найти запись этого же числа в системе с онованием Q:
qn qn-1… q1 q0 q-1 q-2...,
где рi – цифры P-ичной системы.
Перевод Q → P. Задача сводится к вычислению полинома вида
Х=qnQn + qn-1Qn-1 +…+q1Q1 + q0Q0 + q-1Q-1 +…+ q -mQ-m. (2.4)
Для получения P-ичного изображения (2.4) необходимо все цифры qi и число Q заменить P-ичными изображениями и выполнить арифметические операции в P-ичной системе счисления.
Пример. Перевести х=3718 в десятичную систему счисления.
Запишем число 3718 в виде х=3*82 +7*81 + 1*80 и выполним все необходимые действия в десятичной системе:
х=3*64 + 7*8 + 1 = 192+56+1 =249.
Перевод P → Q. Рассмотрим случай перевода целых чисел. Пусть известна запись целого числа N в системе счисления с основанием P и требуется перевести это число в систему с основанием Q. Так как N – целое, то его запись в Q-ичной системе счисления имеет вид
N = qs qs-1 … q1 q0,
где qi – искомые цифры Q-ичной системы. Для определения q0 разделим обе части равенства
N=qsQs + qs-1Qs-1 +…+q1Q1 + q0 (2.5)
на число Q, причем в левой части произведем деление, пользуясь правилами P-ичной арифметики, а правую часть перепишем в виде
N/Q=qsQs-1 + q-1Qs-2 +…+q1 + q0/Q.
Приравнивая между собой полученные целые и дробные части (учитывая, что qi < Q):
[N/Q]=qsQs-1 + q-1Qs-2 +…+q1,
[N/Q]= q0/Q.
Таким образом, младший коэффициент q0 в разложении (2.5) определяется соотношением
q0=Q[N/Q]
Положим
N1 =[N/Q]=qsQs-1 + q-1Qs-2 +…+q1.
Тогда N1 будет целым числом и к нему можно применить ту же самую процедуру для определения следующего коэффциента q1 и т.д.
Таким образом, при условии, что N0 = N, перевод чисел с использованием Р-ичной арифметики осуществляется по следующим реккурентным формулам:
qi=Q[Ni/Q], (2.6)
Ni+1 =[Ni /Q], (i=0, 1, 2, …)
Этот процесс продолжается до тех пор, пока не будет получено Ni+1 = 0.
Пример. Привести число N=47 в двоичную систему. Применяя формулы (2.6) при Q=2, имеем:
47:2=23(1); 23:2=11(1); 11:2=5(1); 5:2=2(1); 2:2=1(0); 1:2=0(1).
Поскольку числа нуль и единица в обеих системах счисления обозначаются одинаковыми цифрами 0 и 1, то в процессе деления сразу получим двоичные изображения искомых цифр: N=1011112.
Дата добавления: 2015-08-08; просмотров: 731;