Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПСС.doc
Скачиваний:
9
Добавлен:
19.04.2015
Размер:
414.21 Кб
Скачать

1.1.3 Перевод чисел из одной системы счисления в другую

Задача перевода заключается в следующем. Пусть известна запись числа Х в системе счисления с каким либо основанием Р:

pn pn-1p1 p0 p-1 p-2 … , (1.6)

где pi - цифры Р-ичной системы (0 pi P-1). Требуется найти запись этого же числа X в ПСС с другим основанием Q:

qs qs-1q1 q0 q-1 q-2 …, (1.7)

где qi – искомые цифры Q-ичной ПСС (0 qi Q-1).

Можно ограничиться случаем положительных чисел, так как перевод отрицательного числа сводится к переводу его модуля и приписыванием к нему знака минус. Рассмотрим три способа перевода числа из одной ПСС в другую.

Первый способ. Согласно (1.6) можно записать:

. (1.8)

Для получения Q-ичного изображения (1.8) необходимо все цифры pi и число Р заменить Q- ичными изображениями и выполнить арифметические операции в Q- ичной ПСС. Как правило, этот способ применяют для преобразования в десятичную ПСС, хотя принципиально он применим для любых ПСС.

Пример 1. Перевести число х = 3718 в десятичную ПСС. Согласно изложенному правилу

.

Пример 2. Перевести число в десятичную ПСС. Действуя аналогично первому примеру, получим:

.

Второй способ. Так как для перевода любого числа достаточно уметь переводить его целую и дробную части, то рассмотрим отдельно эти два случая.

  1. Перевод целых чисел. Известна запись целого числа N в Р-ичной ПСС. Согласно (1.4) запись этого числа в Q-ичной ПСС будет иметь вид:

(1.9)

где . Для определения q0 разделим обе части (1.9) на Q, причём в левой части произведём деление, пользуясь правилами Р-ичной арифметики, и получим:

, (1.10)

. (1.11)

В (1.10) скобками указана операция целочисленного деления, а в (1.11) записана операция взятия остатка от деления N нацело на Q. Теперь, для определения q1, к N1 можно применить те же операции:

.

Таким образом, пологая , перевод чисел с использованием P-ичной арифметики осуществляется по следующим рекуррентным формулам:

. (1.12)

Этот процесс продолжается до тех пор, пока не будет получено . Заметим, что поскольку операции выполняются в Р-ичной ПСС, то в этой же ПСС будут получены искомые коэффициенты , поэтому каждый из них необходимо записать одной Q-ичной цифрой.

Замечание. Рекуррентная формула – это соотношение вида:

которое позволяет вычислить все члены последовательности , если заданы её первые р членов и вид функционального отображения f(∙).

Пример 1. Перевести число N = 47 в двоичную ПСС. Применяя формулы (1.12), имеем:

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 в обеих ПСС (десятичной и двоичной) обозначаются одинаковыми цифрами, то переводить остатки в двоичную ПСС не требуется. Следовательно, записывая остатки в обратном порядке, имеем результат .

Пример 2. Перевести число N = 3060 в шестнадцатеричную систему. Применяя формулы (1.12) при Q = 16, получим:

3060 : 16 = 191(4)

191 : 16 = 11(15)

11 : 16 = 0(11).

Отсюда: q0 = 4, q1 = 1510 = f, q2 = 11 = b , то есть N =bf416 .

2. Перевод дробных чисел. Пусть необходимо перевести в Q-ичную ПСС правильную дробь х (0<x<1), заданную в Р-ичной ПСС. Так как х < 1, то число x в Q-ичной ПСС можно представить в виде:

, (1.13)

где (i=1,2,…) – искомые коэффициенты Q-ичного разложения числа х. Умножим обе части (1.13) на Q, причём в левой части равенства умножение выполним в Р-ичной ПСС. Тогда:

. (1.14)

Учитывая, что и выделяя целую и дробную часть выражения (1.14), получим:

Символом D(∙) – мы обозначили операцию взятия дробной части числа. Ясно, что также будет правильной дробью, к которой можно применить аналогичную операцию. Таким образом, процесс вычисления величин можно записать в виде рекуррентных формул (полагая ):

(1.15)

Это процесс продолжается до тех пор, пока не будет получено , или не будет достигнута требуемая точность изображения числа. Её следует определять из следующих соображений. Пусть единица младшего разряда числа х, заданного в Р-ичной ПСС, есть . Тогда в Q-ичной записи этого числа х следует сохранить l разрядов после точкой, где l удовлетворяет условию:

. (1.16)

Последняя цифра округляется по известным правилам.

Пример 1. Перевести число х = 0.2 в двоичную ПСС. Для начала оценим количества двоичных разрядов, которые необходимо оставить после десятичной точки. С этой целью исходя из соотношений (1.16) запишем неравенство

.

Этому неравенству удовлетворяет l = 4, так как 1/16 > 1/20 > 1/32. Следовательно, в двоичном представлении этого числа необходимо оставить четыре двоичных разрядов после десятичной точки, но с целью правильного округления необходимо будет вычислить пять двоичных разрядов. Теперь, применяя последовательно формулы (1.15), получим:

0.2 ∙ 2 = 0 + 0.4 => q-1 = 0

0.4 ∙ 2 = 0 + 0.8 => q- 2 = 0

0.8 ∙ 2 = 1 + 0.6 => q-3 = 1

0.6 ∙ 2 = 1 + 0.2 => q-3 = 1

0.2 ∙ 2 = 0 + 0.4 => q-3 = 0 и здесь можно остановиться.

Таким образом, представлением точного числа 0.210 в двоичной ПСС является двоичная дробь (с учётом округления четвёртого двоичного разряда):

0.210 ≈ 0.00112 .

Пример 2. Преобразовать десятичное число 0.543 к шестнадцатеричному виду. Сразу оценим количество шестнадцатеричных разрядов, чтобы получить требуемую точность изображения числа в шестнадцатеричной ПСС. Запишем неравенства (1.16) для нашего случая:

.

Подставляя сюда последовательно значения l, убедимся, что l =2 удовлетворяет этим соотношениям (1/256 > 1/2000 > 1/4096). Следовательно, с учётом округления необходимо вычислить три шестнадцатеричных разряда. Действуя по формулам (1.15), получим:

0.543∙16 = 8 + 0.688 => q-1 = 8

0.688∙16 = 11+ 0.008 => q-2 = 11

0.008∙16 = 0 + 0.128 => q-3 = 0 .

В итоге имеем: 0.54310 ≈ 0.8b .

Заметим, что иногда, учитывая представление дробей в виде (1.13), можно некоторые рациональные дроби легко преобразовать в двоичную дробь. Например, дробь вида 7/16 можно представить в виде 7∙2-4 = 1112∙2-4 =

= 0.01112 .

Третий способ. Пусть выполняется соотношение , где к - целое положительное число и Q < P. Тогда для перевода изображения числа х из Р-ичной ПСС в Q-ичную достаточно каждую цифру Р-ичного представления числа х заменить на к цифр Q-ичного изображения этого числа, двигаясь вправо и влево от десятичной точки. Недостающие разряда представления числа дополняются нулями. Например, дано число а7.с16 . Требуется получить его двоичное представление. Согласно изложенному выше правилу имеем, что P=16, Q=2 и, следовательно,

16 = 24 .

Так как величина k =4, то необходимо каждую шестнадцатеричную цифру числа заменить на четыре цифры двоичной ПСС и получим:

а7.с16 6= 1010 0111. 11002.

В случае обратного преобразования (из Q-ичной ПСС в Р- ичную) действуют следующим образом: в исходной Q-ичной записи числа объединяются разряды в группы по к цифр, двигаясь влево и вправо от точки, отделяющей целую и дробные части. При этом, в случае необходимости, добавляют левее самой старшей или правее самой младшей значащей цифры соответствующее количество нулей. После этого, каждая такая группа записывается одной цифрой в Р-ичной ПСС.

Например, двоичное число 101 110. 12 можно записать в различных ПСС в таком виде:

10 11 10. 102 = 232.24, к = 2;

101 110. 1002 = 56.48, к = 3;

0010 1110. 10002 = 2е.816, к = 4.