Лекция № 5. Перевод дробных чисел. Хранение целых чисел
Перевод дробных чисел из десятичной системы счисления в систему счисления с основанием q. Хранение информации в памяти ЭВМ.
5.1. Перевод дробных чисел из десятичной системы счисления в систему счисления с основанием q
Для перевода дробных чисел из десятичной системы счисления в систему счисления с основанием q необходимо отдельно перевести целую (см. 4.2.4.) и дробную части числа. Для перевода дробной части ее необходимо умножить на основание системы счисления q. При этом будет получено произведение, содержащее целую и дробную части. На следующем шаге дробную часть произведения необходимо умножить на основание системы счисления q. При этом будет получено очередное произведение, содержащее целую и дробную части. При выполнении следующих шагов дробные части произведений умножаются на основание системы счисления q. Этот процесс завершается в трех случаях:
1. Дробная часть очередного произведения равна нулю. В этом случае перевод исходного десятичного числа в систему счисления с основанием q точный.
2. Дробная часть очередного произведения оказывается равной одной из дробных частей произведений, найденных ранее. В этом случае искомое число представляет собой периодическую дробь в системе счисления с основанием q.
3. Задана точность перевода, определяемая количеством разрядов в дробной части искомого числа. В этом случае считается, что все разряды дробной части искомого числа определены, когда количество найденных произведений равно точности перевода.
Запишем дробную часть искомого числа. Цифре разряда с номером –1 соответствует целая часть первого произведения. Цифре разряда с номером –2 соответствует целая часть второго произведения, и т. д.
Пример 5.11. Дано десятичное число N10 = 0.625. Выполнить перевод числа в двоичную систему счисления (в скобках указана целая часть произведения):
1) 0.625 ´ 2 = 1.250 (1);
2) 0.250 ´ 2 = 0.500 (0);
3) 0.500 ´ 2 = 1.000 (1).
Дробная часть последнего произведения равна нулю. Перевод в систему счисления исходного числа точный. Запишем результат перевода:
0.62510 = 0.1012.
Пример 5.12. Дано десятичное число N10 = 0.6. Выполнить перевод числа в двоичную систему счисления:
1) 0.6 ´ 2 = 1.2 (1);
2) 0.2 ´ 2 = 0.4 (0);
3) 0.4 ´ 2 = 0.8 (0);
4) 0.8 ´ 2 = 1.6 (1);
5) 0.6 ´ 2 = 1.2 (1).
Дробная часть последнего произведения равна дробной части произведения, полученного на первом шаге. Искомая дробь является периодической с периодом 1001.
Запишем результат перевода: 0.610 = 0.(1001)2 (в скобках указан период).
Как видно из правила перевода дробные числа из десятичной системы счисления в систему счисления с основанием q не всегда переводятся точно (случай № 3). Возможно уменьшение первоначального значения числа (возникает потеря точности).
Пример 5.13. Найти относительную ошибку перевода числа N10 = 10.6 с точностью до четырех знаков. Учитывая решение примера 2.12, получим результат перевода:
N10= 10.610 = 1010.(1010)2 » 1010.10102.
Выполним перевод числа 1010.10102 в десятичную систему счисления и убедимся в потере точности:
1010.10102 = 1 ´ 23 + 0 ´ 22 + 1 ´ 21 + 0 ´ 20 + 1 ´ 2-1 + 0 ´ 2-2 + 1 ´ 2-3 +
+ 0 ´ 24 = 1 + 0 + 1 + 0 + 0.5 + 0.25 + 0.125 + 0.0625 = 10.562510.
В результате получим: N*10 = 10.5625.
Вычислим относительную ошибку: