Как представляются в компьютере вещественные числа?

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

При написании вещественных чисел в программах вместо привычной запятой принято ставить точку. Для отображения вещественных чисел, которые могут быть как очень маленькими, так и очень большими, используется форма записи чисел с порядком основания системы счисления. Например, десятичное число 1.25 в этой форме можно представить так:

1.25 . 100 = 0.125 . 101 = 0.0125 . 102 = ...


или так:

12.5 . 10-1 = 125.0 . 10-2 = 1250.0 . 10-3 = ... .

Любое число N в системе счисления с основанием q можно записать в виде N = M . qp, где M — множитель, содержащий все цифры числа (мантисса), а p — целое число, называемое порядком. Такой способ записи чисел называется представлением числа с плавающей точкой.

Если "плавающая" точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, то есть максимальная точность представления числа в машине. Из этого следует:

Мантисса должна быть правильной дробью, у которой первая цифра после точки (запятой в обычной записи) отлична от нуля: 0.12 <= |M| < 1. Если это требование выполнено, то число называется нормализованным

Мантиссу и порядок q-ичного числа принято записывать в системе с основанием q, а само основание — в десятичной системе. Примеры нормализованного представления:

Десятичная система Двоичная система
753.15 = 0.75315 . 103; —101.01 = —0.10101 . 211 (порядок 112 = 310)
— 0.000034 = — 0.34 . 10-4; 0.000011 = 0.11 . 2-100 (порядок —1002 = —410).

Вещественные числа в компьютерах различных типов записываются по-разному, тем не менее, все компьютеры поддерживают несколько международных стандартных форматов, различающихся по точности, но имеющих одинаковую структуру следующего вида:

Как представляются в компьютере вещественные числа? - student2.ru

Здесь порядок n-разрядного нормализованного числа задается в так называемой смещенной форме: если для задания порядка выделено k разрядов, то к истинному значению порядка, представленного в дополнительном коде, прибавляют смещение, равное (2k-1 — 1). Например, порядок, принимающий значения в диапазоне от —128 до +127, представляется смещенным порядком, значения которого меняются от 0 до 255.

Использование смещенной формы позволяет производить операции над порядками, как над беззнаковыми числами, что упрощает операции сравнения, сложения и вычитания порядков, а также упрощает операцию сравнения самих нормализованных чисел.

Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.

Стандартные форматы представления вещественных чисел: 1) одинарный — 32-разрядное нормализованное число со знаком, 8-разрядным смещенным порядком и 24-разрядной мантиссой (старший бит мантиссы, всегда равный 1, не хранится в памяти, и размер поля, выделенного для хранения мантиссы, составляет только 23 разряда). 2) двойной — 64-разрядное нормализованное число со знаком, 11-разрядным смещенным порядком и 53-разрядной мантиссой (старший бит мантиссы не хранится, размер поля, выделенного для хранения мантиссы, составляет 52 разряда). 3) расширенный — 80-разрядное число со знаком, 15-разрядным смещенным порядком и 64-разрядной мантиссой. Позволяет хранить ненормализованные числа.

Следует отметить, что вещественный формат с m-разрядной мантиссой позволяет абсолютно точно представлять m-разрядные целые числа, т. е. любое двоичное целое число, содержащее не более m разрядов, может быть без искажений преобразовано в вещественный формат.

Как компьютер выполняет арифметические действия над нормализованными числами?

К началу выполнения арифметического действия операнды операции помещаются в соответствующие регистры АЛУ.

Сложение и вычитание

При сложении и вычитании сначала производится подготовительная операция, называемая выравниванием порядков.

В процессе выравнивания порядков мантисса числа с меньшим порядком сдвигается в своем регистре вправо на количество разрядов, равное разности порядков операндов. После каждого сдвига порядок увеличивается на единицу.

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

Пример 1. Сложить двоичные нормализованные числа 0.10111 . 2-1 и 0.11011 . 210. Разность порядков слагаемых здесь равна трем, поэтому перед сложением мантисса первого числа сдвигается на три разряда вправо:

Как представляются в компьютере вещественные числа? - student2.ru

Пример 2. Выполнить вычитание двоичных нормализованных чисел 0.10101 . 210 и 0.11101 . 21. Разность порядков уменьшаемого и вычитаемого здесь равна единице, поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо:

Как представляются в компьютере вещественные числа? - student2.ru

Результат получился не нормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 0.1101 . 20.

Умножение

При умножении двух нормализованных чисел их порядки складываются, а мантиссы перемножаются.

Пример 3. Выполнить умножение двоичных нормализованных чисел:

(0.11101 . 2101) . (0.1001 . 211) = (0.11101 . 0.1001) . 2(101+11) = 0.100000101 . 21000.

Деление

При делении двух нормализованных чисел из порядка делимого вычитается порядок делителя, а мантисса делимого делится на мантиссу делителя. Затем в случае необходимости полученный результат нормализуется.

Пример 4. Выполнить деление двоичных нормализованных чисел:

0.1111 . 2100 : 0.101 . 211 = (0.1111 : 0.101) . 2(100-11) = 1.1 . 21 = 0.11 . 210.

Использование представления чисел с плавающей точкой существенно усложняет схему арифметико-логического устройства.

Упражнения

4.1. Используя Правило Счета, запишите первые 20 целых чисел в десятичной, двоичной, троичной, пятеричной и восьмеричной системах счисления.
[ Ответ ]

4.2. Какие целые числа следуют за числами:

а) 12; е) 18; п) F16;
б) 1012; ж) 78; м) 1F16;
в) 1112; з) 378; н) FF16;
г) 11112; и) 1778; о) 9AF916;
д) 1010112; к) 77778; п) CDEF16 ?

[ Ответ ]

4.3. Какие целые числа предшествуют числам:

а) 102; е) 108; л) 1016;
б) 10102; ж) 208; м)2016;
в) 10002; з) 1008; н) 10016;
г) 100002; и) 1108; о) A1016;
д) 101002; к) 10008; п) 100016 ?

[ Ответ ]

4.4. Какой цифрой заканчивается четное двоичное число? Какой цифрой заканчивается нечетное двоичное число? Какими цифрами может заканчиваться четное троичное число?
[ Ответ ]

4.5. Какое наибольшее десятичное число можно записать тремя цифрами:

o а) в двоичной системе;

o б) в восьмеричной системе;

o в) в шестнадцатеричной системе?

[ Ответ ]

4.6. В какой системе счисления 21 + 24 = 100?
Решение. Пусть x — искомое основание системы счисления. Тогда 100x = 1 · x2 + 0 · x1 + 0 · x0, 21x = 2 · x1 + 1 · x0, 24x = 2 · x1 + 4 · x0. Таким образом, x2 = 2x + 2x + 5 или x2 - 4x - 5 = 0. Положительным корнем этого квадратного уравнения является x = 5.
Ответ. Числа записаны в пятеричной системе счисления.

4.7. В какой системе счисления справедливо следующее:

o а) 20 + 25 = 100;

o б) 22 + 44 = 110?

[ Ответ ]

4.8. Десятичное число 59 эквивалентно числу 214 в некоторой другой системе счисления. Найдите основание этой системы.

[ Ответ ]

4.9. Переведите числа в десятичную систему, а затем проверьте результаты, выполнив обратные переводы:

а) 10110112; е) 5178; л) 1F16;
б) 101101112; ж) 10108; м) ABC16;
в) 0111000012; з) 12348; н) 101016;
г) 0,10001102; и) 0,348; о) 0,А416;
д) 110100,112; к) 123,418; п) 1DE,C816.

[ Ответ ]

4.10. Переведите числа из десятичной системы в двоичную, восьмеричную и шестнадцатеричную, а затем проверьте результаты, выполнив обратные переводы:

а) 12510; б) 22910; в) 8810; г) 37,2510; д) 206,12510.

[ Ответ ]

4.11. Переведите числа из двоичной системы в восьмеричную и шестнадцатеричную, а затем проверьте результаты, выполнив обратные переводы:

а) 1001111110111,01112; г) 1011110011100,112;
б) 1110101011,10111012; д) 10111,11111011112;
в) 10111001,1011001112; е) 1100010101,110012.

[ Ответ ]

4.12. Переведите в двоичную и восьмеричную системы шестнадцатеричные числа:

а) 2СE16; б) 9F4016; в) ABCDE16; г) 1010,10116; д) 1ABC,9D16.
[ Ответ ]

4.13. Выпишите целые числа:

o а) от 1011012 до 1100002 в двоичной системе;

o б) от 2023 до 10003 в троичной системе;

o в) от 148 до 208 в восьмеричной системе;

o г) от 2816 до 3016 в шестнадцатеричной системе.

[ Ответ ]

4.14. Для десятичных чисел 47 и 79 выполните цепочку переводов из одной системы счисления в другую:

Как представляются в компьютере вещественные числа? - student2.ru

[ Ответ ]

4.15. Составьте таблицы сложения однозначных чисел в троичной и пятеричной системах счисления.
[ Ответ ]

4.16. Составьте таблицы умножения однозначных чисел в троичной и пятеричной системах счисления.
[ Ответ ]

4.17. Сложите числа, а затем проверьте результаты, выполнив соответствующие десятичные сложения:

а) 10111012 и 11101112; д) 378 и 758; и) A16 и F16;
б) 1011,1012 и 101,0112; е) 1658 и 378; к) 1916 и C16;
в) 10112, 112 и 111,12; ж) 7,58 и 14,68; л) A,B16 и E,F16;
г) 10112 , 11,12 и 1112; з) 68, 178 и 78; м) E16, 916 и F16.

[ Ответ ]

4.18. В каких системах счисления выполнены следующие сложения? Найдите основания каждой системы:

Как представляются в компьютере вещественные числа? - student2.ru

[ Ответ ]

4.19. Найдите те подстановки десятичных цифр вместо букв, которые делают правильными выписанные результаты (разные цифры замещаются разными буквами):

Как представляются в компьютере вещественные числа? - student2.ru Как представляются в компьютере вещественные числа? - student2.ru

Как представляются в компьютере вещественные числа? - student2.ru

[ Ответ ]

4.20. Вычтите:

а) 1112 из 101002; д) 158 из 208; и) 1А16 из 3116;
б) 10,112 из 100,12; е) 478 из 1028; к) F9E16 из 2А3016;
в) 111,12 из 100102; ж) 56,78 из 1018; л) D,116 из B,9216;
г) 100012 из 1110,112; з) 16,548 из 30,018; м) ABC16 из 567816.

[ Ответ ]

4.21. Перемножьте числа, а затем проверьте результаты, выполнив соответствующие десятичные умножения:

а) 1011012 и 1012; д) 378 и 48;
б) 1111012 и 11,012; е) 168 и 78;
в) 1011,112 и 101,12; ж) 7,58 и 1,68;
г) 1012 и 1111,0012; з) 6,258 и 7,128.

[ Ответ ]

4.22. Разделите 100101102 на 10102 и проверьте результат, умножая делитель на частное.
[ Ответ ]

4.23. Разделите 100110101002 на 11002 и затем выполните соответствующее десятичное и восьмеричное деление.
[ Ответ ]

4.24. Вычислите значения выражений:

o а) 2568 + 10110,12 . (608 + 1210) - 1F16;

o б) 1AD16 - 1001011002 : 10102 + 2178;

o в) 101010 + (10616 - 110111012) 128;

o г) 10112 . 11002 : 148 + (1000002 - 408).

[ Ответ ]

4.25. Расположите следующие числа в порядке возрастания:

o а) 748, 1100102, 7010, 3816;

o б) 6E16, 1428, 11010012, 10010;

o в) 7778, 1011111112, 2FF16, 50010;

o г) 10010, 11000002, 6016, 1418.

[ Ответ ]

4.26. Запишите уменьшающийся ряд чисел +3, +2, ..., -3 в однобайтовом формате:

o а) в прямом коде;

o б) в обратном коде;

o в) в дополнительном коде.

[ Ответ ]

4.27. Запишите числа в прямом коде (формат 1 байт):

а) 31; б) -63; в) 65; г) -128.
[ Ответ ]

4.28. Запишите числа в обратном и дополнительном кодах (формат 1 байт):

а) -9; б) -15; в) -127; г) -128.
[ Ответ ]

4.29. Найдите десятичные представления чисел, записанных в дополнительном коде:

а) 1 1111000; б) 1 0011011; в) 1 1101001; г) 1 0000000.
[ Ответ ]

4.30. Найдите десятичные представления чисел, записанных в обратном коде:

а) 1 1101000; б) 1 0011111; в) 1 0101011; г) 1 0000000.
[ Ответ ]

4.31. Выполните вычитания чисел путем сложения их обратных (дополнительных) кодов в формате 1 байт. Укажите, в каких случаях имеет место переполнение разрядной сетки:

а) 9 - 2; г) -20 - 10; ж) -120 - 15;
б) 2 - 9; д) 50 - 25; з) -126 - 1;
в) -5 - 7; е) 127 - 1; и) -127 - 1.

[ Ответ ]

Наши рекомендации