Тема: Методы перевода чисел из одной системы счисления в другую
Лекция 3.
Рассмотрим вначале методы перевода чисел из смещенной системы счисления с основанием k 1 в смещенную систему с основанием k 2. Через Правая часть выражения (2) определяет правило вычисления количественного эквивалента числа, записанного в форме (1). На этом основан один из методов перевода чисел. Для перевода числа в систему с основанием k 2необходимо записать Пример 1. Перевести число X(2) = 1011,1001 в десятичную систему счисления Описанный метод перевода чисел из одной системы в другую получил название метода непосредственного замещения. Этот метод удобно использовать в случае, когда k 1< k 2 и при переводе чисел в такую систему, где просто выполняяются операции сложения и умножения (например, из двоичной системы в десятичную). Для упрощения вычисления при этом можно воспользоваться таким выражением, полученным из (2): Однако при переводе чисел в системы с «непривычными» основаниями, особенно в случае k 1> k 2,применение этого метода связано с довольно громоздкими вычислениями. Поэтому во многих случаях удобнее пользоваться отдельными методами перевода целых чисел и правильных дробей. Метод перевода целых чисел из системы с основанием k 1всистему с основанием k 2(k 1> k 2) заключается в следующем. Число Пример 2. Перевести число Х (10) = 1247 в пятеричную систему счисления. В случае, когда k 1< k 2, выполняют умножение цифры с весом Пример 3. Перевести из двоичной системы в троичную число Х (2) = 10110110. Перевод правильных дробей из системы счисления с основанием k 1всистему с основанием k 2 (k 1> k 2 ) осуществляется так. Дробь, соответствующая числу Пример 4. Перевести число Х (10) = 0,314 в двоичную систему счисления, ограничившись шестью разрядами после запятой.
При k 1< k 2 для перевода правильной дроби, имеющей т цифр после запятой, необходимо разделить цифру младшего разряда числа Пример 5. Перевести в десятичную систему число Х (2) = 0,101101.
Перевод чисел в симметричные и кососимметричные системы счисления с основанием k 2можно осуществить в три этапа. На первом этапе, используя рассмотренные выше правила, осуществляется перевод чисел в смещенную систему счисления с основанием k 2 . На втором этапе цифры k 2-й смещенной системы, которые отсутствуют в симметричной и кососимметричной системе, представляются двумя цифрами симметричной или кососимметричной системы, в которую осуще-ствляется перевод. На третьем этапе осуществляется суммирование всех допустимых для симметричной или кососимметричной системы цифр, полученных на первом и втором этапе, с учетом их весов по правилам этих систем счисления. Пример 6. Перевести число Х (10) = 1247 в пятеричную каноническую симметричную систему счисления. После выполнения первого этапа (см. пример 2) получим Х {5) = 14442. Поскольку допустимыми для симметричной системы счисления являются цифры {-2, -1, 0, 1, 2}, то цифру 4 представляем двумя цифрами симметричной системы следующим образом: 4 = Для перевода чисел из симметричных и кососимметричных систем в смещенные системы достаточно просуммировать цифры числа в исходной системе с учетом их знаков и весов. Пример 7. Перевести в десятичную смещенную систему число Перевод чисел из канонических систем в квазиканонические системы и об- ратный перевод выполняются аналогично. Для преобразования нечетного положительного числа из k 1-й системы счисления в двоичную систему с цифрами {1, Пример 8. Перевести число X (10)= 0,314 в двоичную систему с цифрами (1, X (2)= 0,0101000001; Обратный перевод выполняется так же, как и перевод из симметричных систем в смещенные. Методы перевода чисел из систем с основанием 2 r в двоичную систему и наоборот очень просты, чем и объясняется широкое использование этих систем для ввода и вывода информации в ЭВМ. Для перевода числа из системы счисления с основанием 2 r в двоичную систему необходимо представить каждую цифру системы с основанием 2 r посредством r двоичных разрядов. Пример 9. Перевести числа X (8) = 762,15 и Y (16) = Е51А,7D в двоичную систему счисления. X (2) = 111110010,001101; Y (2) =1110010100011010,01111101. Для перевода двоичного числа в систему счисления с основанием 2 r необходимо, двигаясь от запятой влево и вправо, разбить двоичное число на группы, содержащие no r разрядов, дополняя при необходимости нулями крайние левую и правую группы. Затем каждую группу из r двоичных разрядов необходимо заменить цифрой системы счисления с основанием 2 r. Пример 10. Перевести число Х {2) = 11111101, 1000001 в шестнадцатиричную систему счисления Высокая скорость перевода чисел может быть достигнута с помощью табличных методов. В простейшем случае применения этих методов в памяти ЭВМ хранится таблица соответствия между всеми числами в системах счисления с основаниями k 1и k 2, а перевод сводится к обращению к нужной ячейке памяти. Однако размеры таблицы и занимаемый ею объем памяти часто оказываются технически неприемлемыми. Поэтому с целью уменьшения занимаемого объема памяти в ней хранят только таблицы соответствия цифр заданных систем счисления и весов их разрядов. Перевод чисел осуществляется путем обращения к этим таблицам и выполнения операций сложения и умножения в системе с основанием k 2(как и по методу непосредственного замещения}. Если числа в системе с основанием k 1представлены п 1разрядами, то по первому варианту размерность хранимой таблицы определяется В позиционных системах с отрицательным основанием k < –1 представление любого рационального числа имеет вид
где xi – цифры i -го разряда. Отсюда следует, что веса отдельных разрядов в таких системах образуют ряд
На этом основан один из методов перевода чисел из системы с основанием k 1в систему с отрицательным основанием k 2< -1. Сначала число переводят в систему с положительным основанием k 2. Затем число Разряды числа В с четным i равны нулю, а в разрядах с нечетным i каждая не равная нулю цифра заменяется единицей в i +1-м разряде и цифрой |k| - xi. После этого необходимо выполнить суммирование чисел A и В с учетом того, что переносы из разрядов с четным i имеют знак «+», а из разрядов с нечетным i – знак «–». Перенос из последнего (n -го) разряда чисел А и В заменяется цифрами 1 и | k |– 1 соответственно в п + 2-м и п + 1-м разрядах. Если же число Пример 11. Перевести числа X (10) = 30,75 и Y (10) = – 23,5 в систему с основанием k 2= – 2. В системе с основанием 2 указанные числа будут представлены как X (2) = 11110,11 и Y (2)= – 10111,1.
1 1 1 1 0, 1 1 1 0 1 1 1, 1
Таким образом, X (-2) = 1100011,11; Y (-2) = 111001,1. Для перевода числа Пример 12. Перевести в систему с положительным основанием числа X (-2) = 10100,1101 и Y (-2) = 101101,10101. Первое из этих чисел положительное, так как его старший разряд имеет вес 24, а второе число отрицательное – вес его старшего разряда равен 25. Другие методы перевода чисел всистемы с отрицательным k основаны на последовательном делении целого числа на основание ина последовательном умножении дробей на основание. Припереводе целых чисел все остатки от деления и припереводе дробей целые части получаемых произведений должны быть положительными, меньшими k. Для выполненияэтих требований при переводе дробей дробная часть D, используемая на каждом шаге перевода, должна удовлетворять условию Перевод чисел из позиционной системы в СОК в простейшем случае выполняется путем деления числа X на модули Рi (i = Другие методы перевода из позиционных систем в СОК основаны на использовании следующих свойств чисел, представленных остатками:
rest (A+B) (mod Pi) = (rest A (mod Pi) + rest B (mod Pi)) (mod Pi), rest AB (mod Pi) = (rest A (mod Pi) x rest B (mod Pi)) (mod Pi). (4)
Пусть для заданного набора модулей Рi (i = k j = (k 1 j, k 2 j, …, k m j), (j = а также любой k -ичной цифры xj = (x 1 j , x 2 j , …, x m j ), (j = Тогда Xi = rest X (mod Pi) = rest = Таким образом, для нахождения остатка числа X по модулю Pi, необходимо сложить попарные произведения остатков цифр xj и весов k j. При этом все сложения и умножения выполняются по модулю Pi. Рассмотренный метод перевода применяется и в другом варианте, использующем не только свойства (4), но и следующее свойство:
rest AB (mod Pi) = (A rest B (mod Pi)) (mod Pi).
В этом случае для вычисления Хi достаточно иметь представление в остатках либо только степеней основания kj, либо только цифр хj, т.е. Xi = Пример 13. Перевести число X (10)= 839 в СОК с модулями Р 1= 3, Р 2 = 5, Р 3 = 7, P 4=11. Для степеней основания и заданных цифр позиционной десятичной системы имеем 102= (1, 0, 2, 1); 8 = (2, 3, 1, 8); 101=(1, 0, 3, 10); 3 = (0, 3, 3, 3); 100= (1, 1, 1, 1); 9 = (0, 4, 2, 9). Далее находим остатки Xi: Х 1= (1ּ2 +1ּ0 +1ּ0) (mod 3) = 2; X 2 = (0ּ3 + 0ּ3 + 1ּ 4) (mod 5) = 4; Х 3= (2ּ1 + 3ּ3 +1ּ2) (mod 7) = 6; Х 4= (1ּ8 +10ּ3 +1ּ9) (mod 11) = 3.
Следовательно, X = (2, 4, 6, 3). Такой же результат получается и при использовании формул (5). Наиболее простой и естественный путь перевода чисел из СОК в позиционную систему, состоящий в решении системы уравнений вида
X = l 1 P 1 + X 1; X = l 2 P 2 + X 2, …; X = li Pi + Xi,
на практике не может быть использован, так так число неизвестных X, l 1, l 2 , …, lm здесь больше числа уравнений и, следовательно, система уравнений имеет бесконечное множество решений. Поэтому для этих целей используются более сложные методы, обеспечивающие однозначность перевода. Метод ортогональных базисов основан на использовании констант (ортогональных базисов) В 1 , В 2 , …, Вm , представление которых в СОК при заданном наборе модулей Pi (i = В 1 = (1, 0, 0, …, 0); В 2 = (0, 1, 0, …, 0); …………………...; Вm = (0, 0, 0, …, 1). Представление числа X в позиционной k -ичной системе в этом случае может быть получено следующим образом:
где Bi(k) = Здесь rest Пример 14. Перевести в десятичную систему число X = (2, 3, 4, 5), представленное в СОК с основаниями Р 1= 3, Р 2 = 5, Р 3 = 7, Р 4 = 11. В этом случае N = 3ּ5ּ7ּ11 = 1155; X (10) = 2ּ385 + 3ּ231 + 4ּ330 + 5ּ210 (mod 1155) = 3833 (mod 1155) = 368. Кроме метода ортогональных базисов для перевода чисел из СОК в позиционную систему используются также методы, основанные на промежуточном представлении числа в полиадической системе счисления. В такой системе при заданном наборе модулей Pi (i =
где bi — цифры полиадической системы. При переводе из СОК b 0= Х 1,а остальные цифры bi вычисляются по формулам bi = rest ai (mod Pi +1),
Здесь rest Pi
Пример 15. Перевести из СОК с основаниями Р 1= 5, Р 2 = 9, Р 3= 11 в десятичную систему число X = (3, 6, 10). Перед вычислением цифр bi полиадической системы найдем формальные обратные величины модулей Рij . Из условий rest 5 P 12 (mod 9) = 1; rest 9 P 21 (mod 5) = 1; rest 5 P 13 (mod 11) = 1; rest 9 P 23 (mod 11) = 1
следует Р 12 = 2, P 13= 9; Р 21 = 6, Р 23= 5. Кроме того, b 0= 3, Следовательно, а 1(С0К) = ((3, 6, 10) - (3, 3, 3)) (0, 2, 9) = (0, 3, 7) (0, 2, 9) = (0,6, 8),
b 1 = rest a 1 (mod 9) = 6; а 2(С0К) = ((0, 6, 8) - (0, 6, 6)) (6, 0, 5) = (0, 0, 2) (6, 0, 5) = (0,0, 10),
b 2 = rest a 2 (mod 11) = 10.
Таким образом, X (10) = b 0 + b 1 P 1 + b 2 P 1 P 2 = 3 + 6ּ5 + 10ּ5ּ9 = 483.
|