Лайонс Р. Цифровая обработка сигналов. Второе издание. Пер. с англ. (2006) (1095937), страница 92
Текст из файла (страница 92)
и овые о матыданныхи их оль в об аботке сигналов 12.4. Двоичные форматы с плавающей запятой Двоичные форматы с плавающей запятой позволяют нам преодолеть большинство ограничений точности и динамического диапазона, накладываемых двоичными форматами с фиксированной запятой, особенно при уменьшении вредоносных эффектов переполнения [19]. В форматах с плавающей запятой слово данных разбивается на две части: мантиссу т и порядок е. Используя эти части, значение двоичного числа с плавающей запятой и можно вычислить как и =т ° 2е. (12-27) порядок дробная часть 11.1011,=~ (12-28) двоичная запятая 1 Например, десятичный логарифм числа 256 равен 2.4082. Двойка слева от десятичной запятой называется характеристикой логарифма, а разряды 4082 называются мантиссой.
Двойка в 2А082 не означает умножение .4082 на 10З. Она значит, что мы берем антялогарифм числа.4082, получаем 2 56, затем умножаем это число на 10з, получая 256. т. е. значение числа представляет собой произведение мантиссы на двойку, возведенную в степень, равную порядку. (Мантисса — не очень удачный термин, поскольку здесь ее смысл очень сильно отличается от смысла мантиссы логарифмов. Изначально мантиссой называли дробную часть логарифма'. Однако вследствие распространенности этого термина в литературе мы будем и дальше использовать его.) Конечно, и мантисса, и порядок в (12-27) могут быть либо положительными, либо отрицательными числами. Предположим, что Ь-битовое число с плавающей запятой использует Ь битов для порядка в формате с фиксированной запятой и со знаком и Ь битов для мантиссы в том же формате.
Чем больше количество битов Ь„тем больше динамический диапазон числа. Чем больше Ь, тем выше разрешение, или точность, числа. Ранние компьютерные модели, использованные разработчиками Ь-битовых форматов с плавающей запятой, показали, что компромисс достигается при Ье = Ь/4 н Ьт = 3Ь/4. Мы увидим, что для типового 32-битового формата с плавающей запятой, используемого в наше время, Ь, = 8 битов и Ь = 24 бита. Чтобы использовать полный динамический диапазон мантиссы, большинство реализаций чисел с плавающей запятой рассматривают мантиссу как дробное двоичное число с фиксированной запятой, сдвигают ее вправо или влево так, чтобы старший бит оказался равным единице и соответственно корректируют порядок.
Это соглашение называют нормализацией. В нормализованном числе мантиссу обычно называют дробной частью. Например, десятичное число 3.687510 можно представить в виде двоичного дробного числа 11.10112. Если мы используем двухбитовую экспоненту и шестибитовую мантиссу, мы можем также представить 11.10112 посредством сдвига вправо на два бита и установки порядка, равного 2, в виде 12.4. аоичные о маты с плаваю ей запятой 461 Это число с плавающей запятой можно преобразовать обратно в десятичное следующим образом [о(1 2 1) +('1'2 2) +(1.2-3) +(0,2-4) +(1е2-5) +(1е2 е)] 22 = =[о(1 1/2) + (1 ° 1/4) + (1 ° 1/8) + (О 1/16) +(1 ° 1/32) + (1 ° 1/64)] 22- =[05+ 025+ 0.125+ 00625+ 003125+ 0015625] 22= (12-29) - 0.921875 '4 =3.6875.
Приобретя некоторый опыт нормализации чисел с плавающей запятой, люди скоро осознали, что хранить старший бит, который всегда равен единице, расточительно. Этот избыточный бит занимает позицию одного бита во всех словах данных и не приносит никакой пользы. Соответственно в практических реализациях форматов с плавающей запятой этот бит отбрасывается, а его присутствие подразумевается, при этом количество полезных битов дробной части увеличивается на единицу. Вот почему в описаниях некоторых форматов с плавающей запятой используется термин скрытый бит. Одновременно с повышением точности представления мантиссы эта схема использует меньший объем памяти, потому что скрытый бит просто учитывается в аппаратуре арифметического устройства.
При использовании скрытого бита дробная часть в (12-28) сдвигается влево на одну позицию и приобретает вид порядок дробная часть 1 ~~ло~ь=~ ю~ ноно ] (12-30) двоичная запятая значение = (-1) ' ° 1о/ ° 2е ~27 1ЕЕЕ 1 скрытый бит (12-31) Вспомним теперь, что порядок и мантисса представляют собой числа со знаком и с фиксированной запятой, а мы обсуждали несколько форматов представления таких чисел, а именно модуль со знаком, двоичный дополнительный и двоичный со смещением.
Все три перечисленных формата используются в стандартных форматах с плавающей запятой. Наиболее часто используемые форматы с плавающей запятой, использующие 32-битовые слова, перечислены в таблице 12.3. Формат 1ЕЕЕ Р754 пользуется наибольшей популярностью, т. к. многие производители интегральный схем реализуют именно его [8, 20-22]. Его порядок е представляется в двоичном формате со смещением (смещенный порядок), а дробная часть представляет собой двоичное число в формате модуля со знаком и со скрытым битом, значение которого предполагается равным 2О.
Десятичное представление нормализованного числа с плавающей запятой в формате 1ЕЕЕ Р754 вычисляется как 462 Глава 12. и оные о метыденныхиих ель зоб аботкесигналов значениетвм - ( — 1) ° 007' 16~ ~. Таблица 12.3. Форматы чисел с плавающей запятой (12-32) Формат стандарта! ЕЕЕ Р764 Бит 31 30 29 28 27 26 26 24 23 22 21 20 ... 2 1 0 23 22 21 20 2-1 ° -Дробная часть (г) к (е)+ Формат !ВМ Бит 31 30 29 28 27 26 26 24 23 22 21 20 ...
2 1 0 26 23 24 23 22 21 20 2-1 2-2 2-3 2-4 2-22 2-23 2-24 Знак (3) Порядок (е)- -Дробная часть (Г)- Формат (3ЕС (О!9!та! Ег)и!ртвпт Согр.) Бит 31 30 29 28 27 26 26 24 23 22 21 20 ... 2 1 О 27 23 23 24 2з 22 21 2 Знак (3) ( — 1- -Порядок (е)- Формат яа1~-БТО 176ОА Бит 31 30 29 ... 11 10 9 8 7 6 б 4 3 2 1 0 20 2-1 2-2 2-20 2-21 2-22 2-23 27 28 23 24 23 22 21 20 «-Дробная часть (т) ° -Порядок (е)- Формат фирмы ПЕС использует двоичный порядок со смещением и дробную часть в виде модуля со знаком и скрытым битом, равным 2 1. Десятичное значение нормализованного числа в формате ПЕС вычисляет следующим образом значениеоЕС = (-1)4 ° 00 17" '2' 123 (12-33) скрытый бит МИ= БТР 1750А представляет собой стандарт чисел с плавающей запятой военно-воздушных сил США.
В этом формате порядок представляется в виде двоичного дополнительного кода, расположенного в восьми младших разрядах слова. Дробная часть в этом формате также представляется двоичным дополнительным Формат чисел с плавающей запятой фирмы 1ВМ несколько отличается от других форматов, потому что в качестве основания он использует 16, а не 2. Порядок представляется в двоичном коде со смещением, а дробная часть — в виде модуля со знаком без скрытого бита. Десятичное значение нормализованного числа в формате 1ВМ вычисляется как 12.4. аоичные о маты с плавающей запятой кодом (без скрытого бита), по этой причине в таблице 12.3 знаковый бит специально не отмечен.
Десятичное значение числа в формате М11-БТ1) 1750А вычисляется как значение1750А / '2е. (12-34) Обратите внимание на то, что все слова в таблице 12.3 содержат 32 бита. Это не случайно. Использование 32-битовых слов облегчает реализацию этих форматов в 8-, 16- и 32-битовых процессорах. Обеспечивая преимущества в обработке данных, эти форматы, с другой стороны„требуют достаточно большого объема сравнений и ветвлений для правильной реализации арифметических операций.
В работе [231 приводятся блок-схемы алгоритмов, показывающие, какие действия необходимо выполнить при сложении или умножении чисел с плавающей запятой. 12.4.1. Динамический диапазон чисел с плавающей запятой Определение динамического диапазона для произвольного формата с плавающей запятой требует значительных усилий.
Мы начнем с повторения выражения для динамического диапазона заданной системы чисел (12-6): Динамический диапазон дБ = = 20 ° 1ойг<Д(наибольшее возможное значение слова)/ /(наименьшее возможное значение слова) ] . (12-35) Когда мы пытаемся определить наибольшее и наименьшее возможные значения слова для заданного формата чисел с плавающей запятой, мы быстро понимаем, что они зависят от таких факторов, как с позиция двоичной запятой; с используется скрытый бит или нет (если используется, то важна его позиция относительно двоичной запятой); а значение основания формата чисел с плавающей запятой; ц формат представления двоичных чисел со знаком, используемый для порядка и дробной части (например, вспомните таблицу 12.2, согласно которой двоичный дополнительный формат позволяет представлять большие по модулю отрицательные числа, чем формат модуля со знаком); а как обрабатываются ненормализованные мантиссы, если таковые возможны (ненормализованные числа — это ненулевые числа, которые меньше минимального нормализованного, но все еще могут быть представлены, когда и порядок, и скрытый бит равны нулю); о как обрабатываются порядки, когда их двоичное представление содержит только единицы или только нули (например, формат 1ЕЕЕ Р754 интерпретирует число, порядок которого в двоичном коде состоит только из единиц, а дробная часть отлична от нуля, как недопустимое число, тогда как в формате 1)ЕС число, знаковый бит которого равен единице, а порядок — нулю, является специальной инструкцией, а недопустимым числом).
464 Глава 12. и овые о матыданныки як оль в об аботке сигналов Бит Ь+Ьв-1 Ь+Ь-2 ... Ь+2 Ь Ь -1 Ь -2 ... 1 0 Г Я Т 2ьв- < 2ье-г 21 2о 2- < 2 г 2-ьт+ < 2-ьт Знак (з) - Порядок (е) - Дробная часть (1) Сначала мы определим, каким может быть максимальное значение нашего слова с плавающей запятой. Наибольшее значение дробной части соответствует случаю, когда скрытый бит и все остальные Ьи битов дробной части равны единице. При этом дробная часть равна/'= [1-ь(1-2 Ья)]. Первая единица в этом выражении представляет скрытый бит слева от запятой, а значение в круглых скобках — значение дробной части, все Ьи битов которой равны единице.