ДРОБНЫЕ ЧИСЛА В ДВОИЧНОЙ СИСТЕМЕ СЧИСЛЕНИЯ

А не записать ли нам в двоичной системе счисления число пи?

А. Алешин

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

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

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,       [4.1]

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

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

    Таблицу степеней первых восьми отрицательных степеней двойки можно посмотреть в Приложении.

    << Предыдущий раздел       Оглавление       Следующий раздел >>


    Одесский национальный университет им. И.И. Мечникова
    Кафедра компьютерных и информационных технологий
    Все права защищены © ;-)
    Web-страница автора
    Алексей Алешин
    Hosted by uCoz