Материал из РУВИКИ — свободной энциклопедии

Алгоритм перевода конечной P-ичной дроби в десятичную



Алгори́тм перево́да коне́чной P-ичной дро́би в десяти́чную — алгоритм перевода конечной дроби, записанной в позиционной системе счисления в десятичную дробь и представление результата в виде, подходящем для дальнейших преобразований в компьютере.

Алгоритм и примеры его использования

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

Запишем формулу представления дробного числа в позиционной системе счисления:

Ap = an-1·pn-1+an-2·pn-2 + … + a1·p1+a0·p0 +a−1·p−1+a−2·p−2 + … + a-m·p-m.

В случае десятичной системы счисления получим:

24,732 = 2·101+4·100+7·10−1+3·10−2.

Перевод дробного числа из двоичной системы счисления в десятичную производится по следующей схеме:

101101,1012 = 1·25+0·24+1·23+1·22+0·21+1·20+1·2−1+0·2−2+1·2−3=45,625.

Перевод дробного числа из десятичной системы счисления в двоичную осуществляется по следующему алгоритму:

  • Вначале переводится целая часть десятичной дроби в двоичную систему счисления;
  • Затем дробная часть десятичной дроби умножается на основание двоичной системы счисления;
  • В полученном произведении выделяется целая часть, которая принимается в качестве значения первого после запятой разряда числа в двоичной системе счисления;
  • Алгоритм завершается, если дробная часть полученного произведения равна нулю или если достигнута требуемая точность вычислений. В противном случае вычисления продолжаются с предыдущего шага.



Пример: Требуется перевести дробное десятичное число 206,116 в дробное двоичное число.

Перевод целой части даёт 20610=110011102 производится по ранее описанным алгоритмам стандартным образом;

дробную часть умножаем на основание 2, занося целые части произведения в разряды после запятой искомого дробного двоичного числа:

.116 • 2 = 0.232

.232 • 2 = 0.464

.464 • 2 = 0.928

.928 • 2 = 1.856

.856 • 2 = 1.712

.712 • 2 = 1.424

.424 • 2 = 0.848

.848 • 2 = 1.696

.696 • 2 = 1.392

.784 • 2 = 0.784

и т. д.

В результате получим: 20610=11001110,00011101102

Литература