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

Преобразование дробных чисел

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

, (14)

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

. (15)

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

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

(16)

Теперь можно сформулировать правило. Для вычисления представления конечной десятичной дроби в новой ПСС необходимо:

  1. Выполнить умножение текущего результата хi (16) на основание новой ПСС (все числа представляются в 10-ой ПСС и операция выполняется по правилам 10-ой ПСС).

  2. Вычислить целую q-(i +1) и дробную части хi +1 текущего результата по формулам (16).

  3. Если новая дробная часть хi +1 равна 0 или получено достаточное количество цифр изображения числа, то перейти к пункту 4, иначе – к пункту 1.

  4. Каждое целое q-(i +1) записываем одной цифрой в новой ПСС.

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

К сожалению, большинство конечных дробей в десятичной ПСС в двоичной ПСС будут бесконечными. Поэтому, необходим критерий для остановки процесса вычислений, задаваемого формулами (16). Таким критерием является достижение требуемой точности изображения числа. Её будем определять исходя из эмпирических соображений, приведённые в нижележащей таблице.

Примерное соответствие между количествами цифр после точки в разных псс

Количество цифр в 10-ой ПСС

Количество цифр в другой ПСС

16

2

1

1

3

2

1

7

3

2

10

4

3

14

5

3

17

В среднем на одну десятичную цифру приходится 3.4 цифры в двоичной ПСС и 0.6 цифр в шестнадцатеричной ПСС.

Надо помнить, что при остановке вычислений по формулам (16) вычислять необходимо на один разряд больше, чем требуется, чтобы правильно выполнить округление в последнем разряде.

Двоичное округление: если отбрасываемый разряд равен 1, то к последнему оставляемому разряду добавляем единицу.

Пример 1. Перевести число х = 0.210 в двоичную ПСС. Для начала оценим количества двоичных разрядов, которые необходимо оставить после точки. Согласно таблице необходимо получить 3 двоичные цифры после точки. С целью правильного округления необходимо будет вычислить на один разряд больше, то есть четыре двоичных разряда. Теперь, применяя последовательно формулы (16), получим:

0. | 2

0 | 4 ( 0.2 ∙ 2 = 0 + 0.4 => q-1 = 0 )

0 | 8 ( 0.4 ∙ 2 = 0 + 0.8 => q- 2 = 0 )

1 | 6 ( 0.8 ∙ 2 = 1 + 0.6 => q-3 = 1 )

1 | 2 ( 0.6 ∙ 2 = 1 + 0.2 => q-3 = 1 ) и здесь можно остановиться.

В этой записи горизонтальной чертой мы отделили исходную дробь от процесса преобразования; вертикальной чертой отделены целая и дробная часть результата умножения только дробной части на новое основание – 2; в скобках показан процесс умножения. Таким образом, представлением точного числа 0.210 в двоичной ПСС является двоичная дробь (с учётом округления третьего двоичного разряда):

0.210 ≈ 0.012 .

Пример 2. Получить для десятичного числа 0.5410 его двоичное представление. Сразу оценим количество двоичных разрядов, чтобы получить требуемую точность изображения числа в двоичной ПСС. Согласно таблице необходимо получить 7 двоичных цифр после точки. С целью правильного округления необходимо будет вычислить на один разряд больше, то есть 8 двоичных разрядов.

Действуя по формулам (16), получим:

0.|54

1 | 08 ( 0.54∙2 = 1 + 0.08 => q-1 = 1 )

0 | 16 ( 0.08∙2 = 0 + 0.16 => q-2 = 0 )

0 | 32 ( 0.16∙2 = 0 + 0.32 => q-3 = 0 )

0 | 64 ( 0.32∙2 = 0 + 0.32 => q-4 = 0 )

1 | 28 ( 0.64∙2 = 1 + 1.28 => q-5 = 1 )

0 | 56 ( 0.28∙2 = 0 + 0.56 => q-6 = 0 )

1 | 12 ( 0.56∙2 = 1 + 0.12 => q-7 = 1 )

0 | 24 ( 0.12∙2 = 0 + 0.24 => q-8 = 0 ) и здесь можно остановиться.

В итоге, с точностью до 7 знаков, имеем: 0.5410 ≈ 0.10001012 .