Главная /
Ассемблер /
Для чайников /
Введение /
Представление данных /
Вещественные числа /
Преобразование дробной части в двоичную форму
Прежде чем продолжить, нам придётся понять, как выполняется преобразование дробной
части числа в двоичную форму. Здесь, как говорится, без бутылки не разобраться.
Придётся включить мозги на полную мощность (или пропустить пока этот раздел к чёртовой матери).
Дробную часть числа легко преобразовать в двоичное число, если её можно разложить
на сумму дробей вида 1/2 + 1/4 + 1/8 + …, то есть на сумму дробей, в знаменателе
которых степени двойки. В таблице 2.7 приведено несколько примеров.
Таблица 2.7. Примеры преобразования десятичных дробей.
Десятичная дробь |
Разложение |
Двоичное вещественное число |
1/2 |
1/2 |
0,1 |
1/4 |
1/4 |
0,01 |
3/4 |
1/2 + 1/4 |
0,11 |
1/8 |
1/8 |
0,001 |
7/8 |
1/2 + 1/4 + 1/8 |
0,111 |
Как вы помните, деление – это сдвиг вправо. Поэтому
1/2 = 1 * 2-1 = 0,1
3/4 = 1/2 + 1/4 = 1 * 2-1 + 1 * 2-2 = 0,1 + 0,01 = 0,11
Однако большинство вещественных чисел нельзя представить в виде конечного числа
двоичных разрядов, то есть нельзя разложить подобным образом. Например, дробь 1/5 = 0,2
раскладывается достаточно сложно, при этом сумма дробей со знаменателями в степени
двойки лишь приблизительно будет равна 1/5:
1/8 + 1/16 + 1/64 = 0,203125 = 0,2
А в двоичной форме это будет
0,203125 = 0,2 = 0,001b + 0,0001b + 0,000001b = 0,001101b
и, как ни странно, потребует 6 разрядов для записи, да ещё и с потерей точности, а,
например, число
7/8 = 0,875 = 0,111b
потребует всего 3 разряда. Вот такие парадоксы.