Тема: Методы перевода чисел из одной системы счисления в другуюЛекция 3.
Рассмотрим вначале методы перевода чисел из смещенной системы счисления с основанием k 1 в смещенную систему с основанием k 2. Через будем обозначать число X в k 1 - й системе. Правая часть выражения (2) определяет правило вычисления количественного эквивалента числа, записанного в форме (1). На этом основан один из методов перевода чисел. Для перевода числа в систему с основанием k 2необходимо записать в форме (2); заменить цифры хi и основание k 1их k 2 - ми эквивалентами, а затем вычислить выражение (2) по правилам системы счисления с основанием k 2. Пример 1. Перевести число X(2) = 1011,1001 в десятичную систему счисления Описанный метод перевода чисел из одной системы в другую получил название метода непосредственного замещения. Этот метод удобно использовать в случае, когда k 1< k 2 и при переводе чисел в такую систему, где просто выполняяются операции сложения и умножения (например, из двоичной системы в десятичную). Для упрощения вычисления при этом можно воспользоваться таким выражением, полученным из (2): Однако при переводе чисел в системы с «непривычными» основаниями, особенно в случае k 1> k 2,применение этого метода связано с довольно громоздкими вычислениями. Поэтому во многих случаях удобнее пользоваться отдельными методами перевода целых чисел и правильных дробей. Метод перевода целых чисел из системы с основанием k 1всистему с основанием k 2(k 1> k 2) заключается в следующем. Число делят на k 2поправилам деления с основанием k 1до получения остатка. Если частное от деления не нуль, то частное становится делимым и процесс деления на k 2продолжают. Как только очередное частное станет равным нулю, процесс деления на k 2 прекращают. Остаток, полученный при первом делении на k 2 , представляет цифру разряда результата с весом , остаток от второго деления представляет цифру результата с весом ,и т. д. Последний остаток является старшей цифрой результата. Пример 2. Перевести число Х (10) = 1247 в пятеричную систему счисления. В случае, когда k 1< k 2, выполняют умножение цифры с весом , числа (старшей цифры числа ) на основание k 1, после чего к произведению прибавляют следующую (в порядке убывания весов) цифру числа . Результат предыдущей операции умножают на k 1и прибавляют очередную цифру числа . Этот процесс заканчивают, когда будет прибавлена цифра с весом (младшая цифра). Все вычисления при этом выполняются в k 2-й системе счисления. Пример 3. Перевести из двоичной системы в троичную число Х (2) = 10110110. Перевод правильных дробей из системы счисления с основанием k 1всистему с основанием k 2 (k 1> k 2 ) осуществляется так. Дробь, соответствующая числу , умножается на k 2 по правилам умножения в системе с основанием k 1 . В полученном произведении отделяется целая часть, которая может быть равной нулю, а дробная часть снова умножается на k 2с последующим отделением целой части. Эти операции повторяют либо до получения нулевой дробной части произведения, либо до получения необходимого количества разрядов числа в новой системе счисления. Старшая цифра результата перевода (т. е. первая после запятой) совпадает с первой отделенной целой частью, вторая цифра результата – со второй отделенной целой частью и т. д. Пример 4. Перевести число Х (10) = 0,314 в двоичную систему счисления, ограничившись шестью разрядами после запятой.
При k 1< k 2 для перевода правильной дроби, имеющей т цифр после запятой, необходимо разделить цифру младшего разряда числа на k 1 и сложить со следующей цифрой этого числа. Такую операцию необходимо повторить еще т –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 = . На третьем этапе осуществляем суммирование. Результат суммирования является числом 1247, представленным в пятеричной симметричной системе счисления. Для перевода чисел из симметричных и кососимметричных систем в смещенные системы достаточно просуммировать цифры числа в исходной системе с учетом их знаков и весов. Пример 7. Перевести в десятичную смещенную систему число . Перевод чисел из канонических систем в квазиканонические системы и об- ратный перевод выполняются аналогично. Для преобразования нечетного положительного числа из k 1-й системы счисления в двоичную систему с цифрами {1, } необходимо вначале перевести это число в двоичную систему с цифрами {0, 1). Затем, просматривая полученную запись слева направо, необходимо выделить все группы цифр вида 00...01, даже если они включают один нуль. Эти группы необходимо заменить на группы вида . Остальные цифры 1 остаются без изменения. При преобразовании нечетных отрицательных чисел группы цифр 00...01 необходимо заменить на группы 1...11, остальные цифры 1 заменить на . Пример 8. Перевести число X (10)= 0,314 в двоичную систему с цифрами (1, }. Используя результат примера 4, получим: X (2)= 0,0101000001; = 0,1 1 1 . Обратный перевод выполняется так же, как и перевод из симметричных систем в смещенные. Методы перевода чисел из систем с основанием 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+ п 1+1 строками. В позиционных системах с отрицательным основанием k < –1 представление любого рационального числа имеет вид где xi – цифры i -го разряда. Отсюда следует, что веса отдельных разрядов в таких системах образуют ряд На этом основан один из методов перевода чисел из системы с основанием k 1в систему с отрицательным основанием k 2< -1. Сначала число переводят в систему с положительным основанием k 2. Затем число разделяют на два числа А и B. При положительном числе разряды числа А с четным i (в том числе и i = 0) равны разрядам числа с таким же i, а разряды числа А с нечетным i равны нулю. Разряды числа В с четным i равны нулю, а в разрядах с нечетным i каждая не равная нулю цифра заменяется единицей в i +1-м разряде и цифрой |k| - xi. После этого необходимо выполнить суммирование чисел A и В с учетом того, что переносы из разрядов с четным i имеют знак «+», а из разрядов с нечетным i – знак «–». Перенос из последнего (n -го) разряда чисел А и В заменяется цифрами 1 и | k |– 1 соответственно в п + 2-м и п + 1-м разрядах. Если же число отрицательное, то разряды числа А с четным i при заменяются единицей в i+ 1-м разряде и цифрой |k| – xi в i -м разряде. Нечетные разряды числа А равны нулю. Разряды числа В с четным i равны нулю, а разряды с нечетным i равны i -м разрядам числа . Суммирование чисел также должно осуществляться с учетом знаков переносов. Пример 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. Для перевода числа в систему с положительным основанием k 2 , необходимо также разделить на два числа А и B. При этом четные разряды числа А равны четным разрядам , нечетные разряды числа А равны нулю. Число В имеет в нечетных разрядах те же цифры, что и число в нечетных разрядах. Четные разряды В равны нулю. Далее, из А следует вычесть В, если положительное, или же из В вычесть А, если отрицательное. Знак определяется знаком веса старшего разряда. Пример 12. Перевести в систему с положительным основанием числа X (-2) = 10100,1101 и Y (-2) = 101101,10101. Первое из этих чисел положительное, так как его старший разряд имеет вес 24, а второе число отрицательное – вес его старшего разряда равен 25. Другие методы перевода чисел всистемы с отрицательным k основаны на последовательном делении целого числа на основание ина последовательном умножении дробей на основание. Припереводе целых чисел все остатки от деления и припереводе дробей целые части получаемых произведений должны быть положительными, меньшими k. Для выполненияэтих требований при переводе дробей дробная часть D, используемая на каждом шаге перевода, должна удовлетворять условию Перевод чисел из позиционной системы в СОК в простейшем случае выполняется путем деления числа X на модули Рi (i = ). Наименьшие положительные остатки от такого деления и образуют представление X в СОК. Однако такой метод перевода часто оказывается малоэффективным из-за большого числа операций деления. Другие методы перевода из позиционных систем в СОК основаны на использовании следующих свойств чисел, представленных остатками:
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 -ичной системы известны представления в остатках любой степени основания 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 (mod Pi) = = (rest xj (mod Pi) rest k j (mod Pi)) (mod Pi) = (xi j k i j (mod Pi)) (mod Pi). Таким образом, для нахождения остатка числа X по модулю Pi, необходимо сложить попарные произведения остатков цифр xj и весов k j. При этом все сложения и умножения выполняются по модулю Pi. Рассмотренный метод перевода применяется и в другом варианте, использующем не только свойства (4), но и следующее свойство:
rest AB (mod Pi) = (A rest B (mod Pi)) (mod Pi).
В этом случае для вычисления Хi достаточно иметь представление в остатках либо только степеней основания kj, либо только цифр хj, т.е. Xi = (x j k i j (mod Pi)) (mod Pi) = (xi j k j (mod Pi)) (mod Pi). (5) Пример 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 -ичной системе в этом случае может быть получено следующим образом:
где . Для фиксированного набора модулей Рi k -ичные представления констант Bi(k) могут быть вычислены заранее по формуле Bi(k) = . Здесь — вес i -го ортогонального базиса, выбираемый из условия rest (mod Pi) = 1. Пример 14. Перевести в десятичную систему число X = (2, 3, 4, 5), представленное в СОК с основаниями Р 1= 3, Р 2 = 5, Р 3 = 7, Р 4 = 11. В этом случае N = 3ּ5ּ7ּ11 = 1155; = 1, = 1, = 2, = 2; В 1= 385, B 2= 231, B 3 = 330, B 4 = 210. Следовательно, X (10) = 2ּ385 + 3ּ231 + 4ּ330 + 5ּ210 (mod 1155) = 3833 (mod 1155) = 368. Кроме метода ортогональных базисов для перевода чисел из СОК в позиционную систему используются также методы, основанные на промежуточном представлении числа в полиадической системе счисления. В такой системе при заданном наборе модулей Pi (i = )вес qi каждого i- горазряда равен qi -1 Pi,a q o = 1. Поэтому представление числа X в полиадической системе имеет вид , где bi — цифры полиадической системы. При переводе из СОК b 0= Х 1,а остальные цифры bi вычисляются по формулам bi = rest ai (mod Pi +1), , .
Здесь – цифра bi -1,представленная остатками по всем основаниям, номер которых выше номера i –1; – так называемая формальная обратная величина модуля Pi по основаниям Рj; (i ≠ j). Остатки , которыми в СОК представляется формальная обратная величина Pi, выбираются из условия rest Pi (mod Рj) = 1.
Пример 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, = (3, 6, 10); = (3, 3, 3); = (0, 2, 9). Следовательно, а 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.
|