Тема_1_Системы_счисления

advertisement
5
Перевод из одних систем счисления в другие
Общий принцип 1: чтобы перевести число в некоторую систему счисления с основанием
M ( цифрами 0, ..., M-1 ), иначе говоря, в M-ичную СС, нужно представить его в виде:
C = an * Mn + an-1 * Mn-1 + ... + a1 * M + a0.
a1..n - цифры числа, из соответствующего диапазона. an - первая цифра, a0 - последняя.
Сравните эту запись с представлением числа, например, в десятичной системе.
Из системы с большим основанием - в систему с меньшим
Очевидно, чтобы найти такое представление, можно
1. разделить число нацело на M, остаток - a0.
2. взять частное и проделать с ним шаг 1, остаток будет a1...
И так, пока частное не равно 0.
Искомое число будет записано в новой системе счисления полученными цифрами.
Общий принцип 2: Если основание одной системы - степень другого, например, 2 и 16, то
перевод можно делать на основании таблицы:
2 -> 16 : собираем с конца числа четверки ( 16 = 2 4 ) чисел, каждая четверка - одна из
цифр в 16-ричной с-ме. Пример ниже.
16 -> 2 - наоборот. Создаем четверки по таблице.
Из меньшего основания - к большему:
Просто вычисляем C = an * Mn + an-1 * Mn-1 + ... + a1 * M + a0, где М - старое основание.
Вычисления, естественно, идут по в новой системе счисления.
Например: из 2 - в 10: 100101 = 1*25 + 0*24 + 0*23 + 1*22 + 0*21+1=32+4+1=37.
Вообще говоря, можно сделать много хитрых трюков - в примерах реализаций они есть :)
Много вопросов задается относительно дробей и отрицательных чисел.
Отpицательные - модуль числа не меняется при переходе к другой СС, посему: запомнить
знак, пpименить стандаpтный метод - поставить знак. Дальше буду говорить уже о
положительных числах

Десятичные дроби - пеpеношу запятую, запоминая, на какую степень основания
умножил.
Например, перенос в троичном числе запятой с 4-го места от конца - то же, что и
умножить его на 34
121201,2112 * 34 = 1212012112.
6
После стандаpтной пpоцедуpы с положительными числами поделить на этот
множитель получившуюся дробь. Получится периобическая дробь - значит судьба
Ваша такая. Помните: в 3-чной системе 1/3 = 0.1, а в десятичной - 0,(3).
Неблагодарное это дело - с десятичными дробями оперировать.

Обыкновенные - пpавильность дpоби сохpаняется относительно пpеобpазований,
значит то же - стандаpт по числителю и знаменателю.
Перевод 2-ная -> 16-ная.
Пеpевод из двоичной системы исчисления в 16-тиричную осуществляется по таблице для
каждых 4-х двоичных единиц:
0000=0 0001=1 0010=2 0011=3
0100=4 0101=5 0110=6 0111=7
1000=8 1001=9 1010=A 1011=B
1100=C 1101=D 1110=E 1111=F
Например:
число 111010110 = 0001'1101'0110 = 1D6
Перевод дробных чисел
Пусть X - правильная дробь, заданная в 10-чной системе счисления и требуется перевести
ее в систему счисления с основанием Q, т.е. найти цифры bi для записи X=b-1*Q-1+b-2*Q-2+
... +b-m*Q-m.
Для определения bi умножим левую и правую части равенства на Q, причем в левой части
умножение выполняется по правилам 10-чной арифметики. Имеем: X*Q=b-1+b-2Q-1+...+b-m+1
. Представим левую часть равенства как сумму целой и дробной частей
mQ
X*Q=[X*Q]+{X*Q}и приравняем их с целой и дробной частями правой части равенства:
[X*Q]=b-1 и {X*Q}=b-2Q-1+...+b-mQ-m+1. Таким образом, цифра b-1 является целой частью от
умножения X на Q (умножение выполняется в 10-чной системе счисления). Далее
положим X1=X*Q и повторим аналогичные действия для определения цифры b-2.
Таким образом, перевод
рекуррентным формулам:


правильной
дроби
X
осуществляется
по
следующим
b-i-1=[Xi*Q].
Xi+1={Xi*Q}, i=0, 1, 2, …; процесс продолжается до тех пор, пока не будет получено
Xi+1=0 или не будет получена требуемая точность изображения числа (требуемое
количество цифр после запятой).
Словесная формулировка: Для перевода правильной десятичной дроби X в систему
счисления с основанием Q необходимо X умножить на Q, записанное в 10-чной системе
счисления. Затем дробную часть полученного произведения снова умножить на Q.
Процесс продолжать до тех пор, пока последнее полученное произведение не станет
равным нулю, либо не будет достигнута требуемая точность изображения числа X.
Представлением числа X будет последовательность целых частей полученных
7
произведений, изображенных одной Q-чной цифрой и записанных в порядке их
получения.
Примеры:
Перевести число 0,3610 в 2-чную систему счисления c 5 знаками после запятой.
0,36*2=0+0,72; 0,72*2=1+0,44; 0,44*2=0+0,88; 0,88*2=1+0,76; 0,76*2=1+0,52. Таким
образом, 0,3610=0,010112.
Перевести число 0,3610 в 16-чную систему счисления c 2 знаками после запятой.
0,36*16=5+0,76; 0,76*16=12+0,16. Таким образом, 0,3610=0,5С16.
Перевод чисел в случае кратных оснований систем счисления
При переводе числа X из P-чной системы счисления в Q-чную в случае, если P=Qk (k целое положительное), запись XQ-P в смешанной (Q-P)-чной системе счисления
тождественно совпадает с записью XQ в Q-чной системе счисления. Например, 8=23 и
16=24, поэтому для записи 8-чного числа в 2-чной системе счисления достаточно заменить
каждую его цифру на соответствующее 3-разрядное двоичное число (соответствующую
двоичную триаду), а для записи 16-чного числа в 2-чной системе счисления достаточно
заменить каждую его цифру на соответствующее 4-разрядное двоичное число
(соответствующую двоичную тетраду). А для перевода двоичных чисел в 8-чную и 16чную системы счисления необходимо разбить число соответственно на триады и тетрады
(добавляя при необходимости нули слева от целой части и справа от дробной части) и
заменить их на соответствующие 8-чные и 16-чные цифры.
Download