|
Как представляются в компьютере вещественные числа?Система вещественных чисел в математических вычислениях предполагается непрерывной и бесконечной, т.е. не имеющей ограничений на диапазон и точность представления чисел. Однако в компьютерах числа хранятся в регистрах и ячейках памяти с ограниченным количеством разрядов. В следствие этого система вещественных чисел, представимых в машине, является дискретной (прерывной) и конечной. При написании вещественных чисел в программах вместо привычной запятой принято ставить точку. Для отображения вещественных чисел, которые могут быть как очень маленькими, так и очень большими, используется форма записи чисел с порядком основания системы счисления. Например, десятичное число 1.25 в этой форме можно представить так: 1.25 . 100 = 0.125 . 101 = 0.0125 . 102 = ... или так: 12.5 . 10-1 = 125.0 . 10-2 = 1250.0 . 10-3 = ... .
Если "плавающая" точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, то есть максимальная точность представления числа в машине. Из этого следует:
Мантиссу и порядок 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). Вещественные числа в компьютерах различных типов записываются по-разному, тем не менее, все компьютеры поддерживают несколько международных стандартных форматов, различающихся по точности, но имеющих одинаковую структуру следующего вида: ![]() Здесь порядок n-разрядного нормализованного числа задается в так называемой смещенной форме: если для задания порядка выделено k разрядов, то к истинному значению порядка, представленного в дополнительном коде, прибавляют смещение, равное (2k-1 — 1). Например, порядок, принимающий значения в диапазоне от —128 до +127, представляется смещенным порядком, значения которого меняются от 0 до 255. Использование смещенной формы позволяет производить операции над порядками, как над беззнаковыми числами, что упрощает операции сравнения, сложения и вычитания порядков, а также упрощает операцию сравнения самих нормализованных чисел. Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.
Следует отметить, что вещественный формат с m-разрядной мантиссой позволяет абсолютно точно представлять m-разрядные целые числа, т. е. любое двоичное целое число, содержащее не более m разрядов, может быть без искажений преобразовано в вещественный формат. ^ К началу выполнения арифметического действия операнды операции помещаются в соответствующие регистры АЛУ. ^ При сложении и вычитании сначала производится подготовительная операция, называемая выравниванием порядков.
В результате выравнивания порядков одноименные разряды чисел оказываются расположенными в соответствующих разрядах обоих регистров, после чего мантиссы складываются или вычитаются. В случае необходимости полученный результат нормализуется путем сдвига мантиссы результата влево. После каждого сдвига влево порядок результата уменьшается на единицу. Пример 1. Сложить двоичные нормализованные числа 0.10111 . 2-1 и 0.11011 . 210. Разность порядков слагаемых здесь равна трем, поэтому перед сложением мантисса первого числа сдвигается на три разряда вправо: ![]() Пример 2. Выполнить вычитание двоичных нормализованных чисел 0.10101 . 210 и 0.11101 . 21. Разность порядков уменьшаемого и вычитаемого здесь равна единице, поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо: ![]() Результат получился не нормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 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. Использование представления чисел с плавающей точкой существенно усложняет схему арифметико-логического устройства. |
![]() | Как представляются в компьютере целые числа? Обычно занимают в памяти компьютера один или два байта. В однобайтовом формате принимают значения от 000000002 до 111111112. В двубайтовом... | ![]() | Домашнее задание по теме «Представление целых чисел в компьютере» Запишите в прямом коде в восьмиразрядной сетке со старшим знаковым разрядом следующие двоичные числа |
![]() | Самостоятельная работа по теме «Положительные и отрицательные числа» Вариант Пусть положительное число. Сравните с нулем значение выражения: а, б, в Из данных чисел -8; 2,1; 7; 0,2020020002…;; 3,(6);; 0; 201;; -1 выпишите: а) натуральные числа; б) целые отрицательные числа; в)... | ![]() | Контрольная работа по теме «Повтор материала курса алгебры 7 класса» Из данных чисел -8; 2,1; 7; 0,2020020002…;; 3,(6);; 0; 201;; -1 выпишите: а) натуральные числа; б) целые отрицательные числа; в)... |
![]() | Человек Ренессанса по отношению к трагедиям xx-ого века Действительно вещи представляются нам как текст пишет почти в виде свидетельства и как, если он брызгал пера жертвы или свидетеля... | ![]() | Тема: Представление числовой информации в компьютере Алгоритм перевода числа из 10-тичной сс в другую позиционную сс Если частное не =0 то, продолжать деление, иначе переписать все остатки снизу вверх |
![]() | Виртуальная школа компьютерных технологий ... | ![]() | 1. Записать прямой код числа, интерпретируя его как восьмибитовое целое без знака: а) 153(10); б) 162(10); в) 209(10) Записать дополнительный код числа, интерпретируя его как восьмибитовое целое со знаком |
![]() | 1. Записать прямой код числа, интерпретируя его как шестнадцатибитовое целое без знака: а) 20282(10); б) 18094(10) Записать дополнительный код числа, интерпретируя его как шестнадцатибитовое целое со знаком | ![]() | Запишите прямой код десятичного числа 101, интерпретируя как восьмибитовое целое без знака Запишите дополнительный код десятичного числа 52, интерпретируя как восьмибитовое целое со знаком |