КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Выполнение арифметических операций с плавающей запятой
4.4.1. Смещенный код
Смещенный код, или двоичный код с избытком, используется в ЭВМ для упрощения операций над порядками чисел с плавающей запятой. Он формируется следующим образом. Сначала выбирается длина разрядной сетки - n и записываются последовательно все возможные кодовые комбинации в обычной двоичной системе счисления. Затем кодовая комбинация с единицей в старшем разряде и нулями в других разрядах (т.е. имеющая значение 2n-1), выбираемся для представления числа 0. Все последующие комбинации с единицей в старшем разряде будут представлять числа 1, 2,,3,... соответственно, а предыдущие комбинации в обратном порядке –числа -1, -2, -3,... Двоичный код с избытком для 4-разрядной сетки представлен в табл. 1. Таблица 1
Например, числа 3 и -3 в формате со смещением для 4-разрядной сетки будут иметь представление 1011 и 0101 соответственно. Нетрудно заметить, что различие между двоичным кодом с избытком и двоичным дополнительным кодом состоит в противоположности значений знаковых битов, разность значений кодовых комбинаций в обычном двоичном коде и двоичном коде с избытком для 4-разрядной сетки равна 8. В связи с этим смещенный код для 4-разрядной сетки называют двоичным кодом с избытком 8. Смещенный код можно создать для любого значения n -разрядной сетки. При этом он будет называться двоичным кодом с избытком 2n-1. Данные коды используются для упрощения операций над порядками чисел с плавающей запятой. Так, при размещении порядка числа в 8 разрядах используется двоичный код с избытком 128. В этом случае порядок, принимающий значения в диапазоне от - 128 до +127, представляется смещенным порядком, значения которого меняются от 0 до 255, что позволяет работать с порядками как с целыми без знака.
4.4.2. Представление вещественных чисел и выполнение арифметических операций над ними в ЭВМ
Десятичное число 234,47 или двоичное число 1011,01 в формате с плавающей запятой можно представить следующим образом: 231,47 = 234 470 • 10 -3 = 23 447 • 10 -2 = 2344,7 • 10 -1 = и т.д.
1011,01 = 101101 • 10-10 = 1011,01 • 100= 10,1101 • 1010 = 0,101101•10 100.
Такое представление чисел называется представлением с плавающей запятой, где порядок определяет, на сколько разрядов необходимо осуществить сдвиг относительно запятой. Если плавающая запитая расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведенных под мантиссу, обеспечивается запись максимального количества значащих цифр числа, т. е. максимальная точность представления числа. Из этого следует, что мантисса должна быть правильной дробью (| М| < 1), у которой первая цифра а после запятой отлична от ноля (| М| = 0, а...). Для двоичной системы счисления а=1, поэтому |М| = 0,1... Если это требование выполнено, то число называется нормализованным. Нормализованная мантисса в двоичной системе счисления всегда представляется десятичным числом n, лежащим в диапазоне 0,5 < n < 1. Примеры нормализованного представления. Десятичная система 753,15 = 0,75315 • 103 -0,000034 = -0,34 • 104 Двоичная система -101,01 = -0,10101• 1011 (порядок 112 = 310); 0,000011 = 0,11 •10-100 (порядок -1002 = -410). Вещественные числа в компьютерах представляются, в трех форматах — одинарном, двойном и расширенном, имеющих одинаковую структуру вида (рис. 1). Рис. 1. Формат представления вещественных чисел
Здесь порядок n- разрядного нормализованного числа задается смещенным кодом, позволяющим производить операции над порядками как над беззнаковыми числами, что упрощает операции сравнения, сложения и вычитания порядков, а также операцию сравнения самих нормализованных чисел. Нормализованное число одинарной точности (32 бита), представленное в формате с плавающей запятой, записывается в память следующим образом: знак числа (знак мантиссы) — в 15 бите первого слова (0 — для положительных и 1 — для отрицательных чисел); порядок размещается в битах 7—14 первого слова, а мантисса занимает остальные 23 бита в двух словах. При этом, хотя для мантиссы отведены 23 разряда, в операциях участвуют 24 разряда, так как старший разряд мантиссы нормализованного числа не хранится (он всегда равен 1), т. е. имеет место так называемый скрытый разряд, который при аппаратном выполнении операций автоматически восстанавливается и учитывается при выполнении операций. Порядок числа также учитывает скрытый старший разряд мантиссы. Нормализованное число двойной точности представляет собой 64-разрядное нормализованное число со знаком, 11-разрядным смещенным порядком и 53-разрядной мантиссой (размер поля, выделенного для хранения мантиссы, составляет 52 разряда, а старший бит мантиссы не хранится). Расширенный формат позволяет хранить ненормализованные числа в виде 80-разрядного числа со знаком: 15-разрядным смешенным порядком и 64-разрядиой мантиссой. Следует отметить, что вещественный формат с m -разрядной мантиссой дает возможность абсолютно точно представлять m -разрядные целые числа, т. е. любое двоичное целое число, содержащее не более m разрядов, может быть без искажений преобразовано в вещественный формат. Пример. Представление чисел с плавающей запятой: -49,510 = -110001,1002 = - 0,11000112 • 102(6)10, при этом порядок числа представляется двоичным кодом с избытком 128: 610 = (6 + 128)10 =100 001102.
Введение термина «плавающая запятая» объясняется тем, что двоичный порядок, определяющий фактическое положение запятой в изображении числа, корректируется после выполнения каждой арифметической операции, т. е. запятая в изображении числа плавает (изменяется ее положение) по мере изменения данной величины. При алгебраическом сложении и вычитании чисел, представлениях в формате с плавающей запятой, сначала уравниваются порядки слагаемых. В процессе выравнивания порядков мантисса числа с меньшим порядком сдвигается в своем регистре вправо на количество разрядов, равное разности порядков операндов. После каждого сдвига порядок увеличивается на единицу. В результате выравнивания порядков одноименные разряды чисел оказываются расположенными в соответствующих разрядах обоих регистров, после чего мантиссы складываются или вычитаются. В случае необходимости полученный результат нормализуется путем сдвига мантиссы результата влево. После каждого сдвига влево порядок результата уменьшается на единицу. Ниже в примерах для упрощения расчетов порядок представлен в обычной двоичной форме. Пример. Выполним вычитание двоичных нормализованных чисел 0,10101•1010 и 0,11101•101. Разность порядков уменьшаемого и вычитаемого здесь равна единице, поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо: 0,10101 •1010 – 0,011101•1010 ----------------------- 0,001101•1010 Результат получился не нормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 0,1101•1010. При умножении порядки складываются, а мантиссы перемножаются. Пример. Выполним умножение двоичных нормализованных чисел: (0,11101•10101) • (0,1001 • 1011) = (0,11101 • 0,1001) • 10(101+11)=0,100000101 • 101000. При делении из порядка делимого вычитается порядок делителя, а над мантиссами совершается обычная операция деления. В случае необходимости полученный результат нормализуется. Пример. Выполним деление двоичных нормализованных чисел. 0,1111•10100: 0,101•1011= (0,1111: 0,101) •10(100-11) = 1,1•101 =0,11•1010
Дата добавления: 2014-01-07; Просмотров: 2865; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |