Задача перевода заключается в следующем: Пусть известна запись числа x в системе счисления с каким-либо основанием P:
x = pn·Pn+pn-1·Pn-1+…+p1·P1+p0·P0+p-1·P-1+…+p-m·P-m
где pi – цифры P-ичной системы. Требуется найти запись этого числа x в системе счисления с основанием Q:
x = qu·Qu+qu-1·Qu-1+…+q1·Q1+q0·Q0+q-1·Q-1+…+q-v·Q-v
где qi – искомые цифры Q-ичной системы.
Для перевода любого числа достаточно отдельно перевести его целую и дробную части.
Перевод целых чисел
Представим число x в Q-ичной системе в виде полинома
x = qu·Qu+qu-1·Qu-1+…+q1·Q1+q0·Q0
Разделим обе части этого равенства на основание искомой системы счисления Q, причем в левой части произведем фактическое деление, поскольку запись числа x в P-ичной системе нам известна, а в правой части деление выполним аналитически:
x/Q = qu·Qu-1+qu-1·Qu-2+…+q1·Q0; q0 — остаток от деления
Таким образом, младший коэффициент числа x в Q-ичной системе счисления является остатком от деления x на Q. Число x/Q является целым, и к нему тоже можно применить описанную процедуру:
x/Q2 = qu·Qu-2+qu-1·Qu-3+…+q2·Q0; q1 — остаток от деления
Этот процесс продолжается до тех пор, пока не получено x/Qu=0. Для записи числа x в Q-ичной системе счисления запишем каждый из полученных коэффициентов qi одной Q-ичной цифрой:
xQ=ququ-1…q1q0
Пример 1: Перевести число 4710 в двоичную систему счисления (Q=2).
Искомое число 4710 = 1011112.
Пример 2: Перевести число 306010 в шестнадцатеричную систему счисления (Q = 16).
Таким образом, 410 = 416, 1510 = F16, 1110 = B16. Искомое число
306010 = BF416.
Перевод дробных чисел
Пусть необходимо перевести в Q-ичную систему правильную дробь x (0<x<1), заданную в P-ичной системе счисления.
Поскольку x<1, то в Q-ичной системе запись числа x будет иметь вид
x = q-1·Q-1+q-2·Q-2+…+q-v·Q-v
Умножив обе части этого выражения на Q, получим
x·Q = q-1·Q0+q-2·Q-1+…+q-v·Q-v+1
где q-1 является целой частью, а (x·Q — q-1) – правильная дробь. Таким образом, искомые коэффициенты qi могут быть определены по формуле
q-(i+1)=[xi·Q]
где [ ] – целая часть. Процесс продолжается до тех пор, пока не будет получено xi+1=0, либо не будет достигнута требуемая точность числа.
Пример 3: Перевести число 0,27310 в двоичную систему счисления
Искомое число x = 0,27310 = 0,0100010111…2.
Назад: Представление данных и архитектура ЭВМ
Комментариев к записи: 2