Статья Автор: Деникина Н.В., Деникин А.В.

Точная дробная запись

Точная дробная запись

В позиционной системе счисления с основанием b каждая позиция имеет свой вес: цифры после запятой имеют веса 1/b, 1/b2, 1/b3 и так далее. Если дробная часть содержит лишь конечное число цифр, такая запись изображает точное число, а не приближение. Когда ширина поля не задана отдельно, избыточные нули в самом конце записи не сохраняются: 1,50b и 1,5b обозначают одно и то же число.

Один блок цифр — один числитель

Как перевести конечную дробь в число. Пусть дробная часть содержит цифры d1, d2, …, dk. Все эти цифры образуют один числитель: в исходной системе счисления из них составляется целое число

M = d1d2…dk(b),

и тогда

\(0,d_{1}d_{2}\ldots d_{k(b)} = \frac{M}{b^{k}}\),

где M — значение целой записи d1d2…dk в основании b. Числитель M вычисляется по правилам исходной системы счисления, а знаменатель bk определяется количеством позиций после запятой.

Пример 1. В шестнадцатеричной системе буква B обозначает цифру 11:

0,2B16 = (2·16 + 11) / 162 = 43 / 256.

Пример 2. Число 0,02B16 в 16 раз меньше предыдущего: в записи появилась дополнительная позиция сразу после запятой, поэтому знаменатель вырос в b = 16 раз, а числитель не изменился:

0,02B16 = (0·162 + 2·16 + 11) / 163 = 43 / 4096 = (1/16) · (43/256).
 

Проверь себя

Чему равно 0,128 в виде обыкновенной дроби?


Сопоставьте каждое число с его видом «целое / степень основания» (без сокращения).


Число и длина записи — это разные вещи

Нуль в конце записи ничего не меняет: 0,48 = 0,408 = 0,4008. Другое дело — нуль сразу после запятой: он сдвигает все цифры на одну позицию вправо, поэтому 0,048 ровно в восемь раз меньше, чем 0,48.

Будем различать два способа записи. Поле заданной ширины — это запись, в которой мы сохраняем все оговорённые позиции, даже если среди них есть нули. Кратчайшая конечная запись — это запись, в которой мы убрали нулевые цифры только с самого конца: оставляем всё, что стоит до последней ненулевой цифры, и ничего не убираем из середины.

Когда конечная запись существует

Возьмём обыкновенную дробь m/q и сократим её. Конечная запись в основании b существует тогда и только тогда, когда q делит некоторую степень числа b. Иначе говоря, все простые делители знаменателя q должны встречаться среди простых делителей основания b — и тогда дробь можно исчерпать конечным числом позиций.

Пример. Дробь 7/72 в основании 12 конечна: 72 = 23·32, а 12 = 22·3 — все множители знаменателя (2 и 3) есть в основании. В основании же 10 та же дробь не конечна: в знаменателе есть множитель 3, которого в числе 10 нет.

Проверь себя

Выберите все дроби, у которых запись в шестнадцатеричной системе конечна.


Сколько позиций действительно нужно

Теперь мы можем заранее вычислить длину записи, не выписывая сами цифры. Разложим основание и сокращённый знаменатель на простые множители:

b = p1e₁…preᵣ,   q = p1a₁…praᵣ.

Пусть ℓ — минимальное число дробных позиций. В степени bℓ каждого простого множителя должно хватить, чтобы покрыть знаменатель q, поэтому

ℓ = max ⌈ai / ei⌉.

Проверим на примере. Для дроби 7/72 в основании 12 имеем q = 72 = 23·32, а b = 12 = 22·3. Считаем: max(⌈3/2⌉, ⌈2/1⌉) = max(2, 2) = 2. И действительно, 7/72 = 14/144 = 0,1212.

Этот приём позволяет найти длину записи, не выписывая её цифры. Для целого числа минимальное число дробных позиций равно 0: его запись набрана целиком.

Проверь себя

Сколько цифр после запятой содержит кратчайшая конечная запись 11/432 в системе с основанием 12?


Верно или неверно?

Печать