Числа в форме с плавающей запятой
Стр 1 из 2Следующая ⇒ ЭВМ и периферийные устройства Лектор: доц. Осмоналиев А.Б. Лекция 5. (2 часа) Тема. Типы и форматы операндов. Числовая информация. Размещение числовых данных в памяти.
Типы и форматы операндов Машинные команды оперируют данными, которые в этом случае приринято называть операндами. К наиболее общим (базовым) типам операндов можно отнести: адреса, числа, символы и логические данные. Помимо них ВМ обеспечивает обработку и более сложных информационных единиц: графических изображений, аудио-, видео- и анимационной информации. Такая информация является производной от базовых типов данных и хранится в виде файлов на внешних запоминающих устройствах. Для каждого типа данных в ВМ предусмотрены определенные форматы.
Числовая информация Среди цифровых данных можно выделить две группы: • целые типы, используемые для представления целых чисел; • вещественные типы для представления рациональных чисел. В рамках первой группы имеется несколько форматов представления численной информации, зависящих от ее характера. Для представления вещественных чисел используется форма с плавающей запятой.
Числа в форме с фиксированной запятой Представление числа X в форме с фиксированной запятой (ФЗ), которую иногда называют также естественной формой, включает в себя знак числа и его модуль в q -ичном коде. Здесь q - основание системы или база. Для современных ВМ характерна двоичная система (q =2), но иногда используются также восьмеричная (q =8) или шестнадцатеричная (q =16) системы счисления. Запятую в записи числа называют соответственно двоичной, восьмеричной или шестнадцатеричной. Знак положительного числа кодируется двоичной цифрой 0, а знак отрицательного числа - цифрой 1.
Числам с ФЗ соответствует запись вида Х = Отрицательные числа обычно представляются в дополнительном коде. Разряд кода числа, в котором размещается знак, называется знаковым разрядом кода. Разряды, где располагаются значащие цифры числа, называются цифровыми разрядами кода. Знаковый разряд размещается левее старшего цифрового разряда. Положение запятой одинаково для всех чисел и в процессе решения задач не меняется. Хотя запятая и фиксируется, в коде числа она никак не выделяется, а только подразумевается. В общем случае разрядная сетка ВМ для размещения чисел в форме с ФЗ имеет вид, представленный на рис. 5.1, где п разрядов используются для записи целой части числа и r разрядов — для дробной части.
Рис. 5.1. Формат представления чисел с фиксированной запятой
При заданных значениях n и r диапазон изменения модулей чисел, коды которых могут быть представлены в данной разрядной сетке, определяется соотношением
Если число является смешанным (содержит целую и дробную части), оно обрабатываются как целое, хотя и не является таковым (в этом случае применяют термин масштабируемое целое). Обработка смешанных чисел в ВМ встречается крайне редко. Как правило, используются ВМ с дробной (n = 0) либо целочисленной (r = 0) арифметикой. Представление чисел в формате ФЗ упрощает аппаратурную реализацию ВМ и сокращает время выполнения машинных операций, однако при решении задач необходимо постоянно следить за тем, чтобы все исходные данные, промежуточные и окончательные результаты не выходили за допустимый диапазон формата, иначе возможно переполнение разрядной сетки и результат вычислений будет неверным. Упакованные целые числа В АСК современных микропроцессоров имеются команды, оперирующие целыми числами, представленными в упакованном виде. Связано это с обработкой мультимедийной информации. Формат предполагает упаковку в пределах достаточно длинного слова (обычно 64-разрядного) нескольких небольших целых чисел, а соответствующие команды обрабатывают все эти числа параллельно. Если каждое из чисел состоит из четырех двоичных разрядов, то в 64-разрядное слово можно поместить до 16 таких чисел. Неиспользованные разряды заполняются нулями.
В микропроцессорах фирмы Intel, начиная с Pentium присутствуют специальные команды для обработки мультимедийной информации (ММХ-команды), оперирующие целыми числами, упакованными в квадрослова (64-разрядные слова). Предусмотрены три формата (рис. 5.2.): упакованные байты (восемь 8-разрядных чисел); упакованные слова (четыре 16-разрядных числа) и упакованные двойные слова (два 32-разрядных числа).
Рис. 5.2. Форматы упакованных целых чисел в технологиях ММХ и 3DNow!
Байты в формате упакованных байтов нумеруются от 0 до 7, причем байт 0 располагается в младших разрядах квадрослова. Аналогичная система нумерации и размещения упакованных чисел применяется для упакованных слов (номера 0-3) и упакованных двойных слов (номера 0-1). Идентичные форматы упакованных данных применяются также в другой технологии обработки мультимедийной информации, предложенной фирмой AMD. Эта технология носит название 3DNow!, а реализована в микропроцессорах данной фирмы.
Десятичные числа В ряде задач, главным образом, учетно-статистического'характера, приходится иметь дело с хранением, обработкой и пересылкой десятичной информации. Особенность таких задач состоит в том, что обрабатываемые числа могут состоять из различного и весьма большого количества десятичных цифр. Традиционные методы обработки с переводом исходных данных в двоичную систему счисления и обратным преобразованием результата зачастую сопряжены с существенными накладными расходами. По этой причине в ВМ применяются иные специальные формы представления десятичных данных. В их основу положен принцип кодирования каждой десятичной цифры эквивалентным двоичным числом из четырех битов (тетрадой), то есть так называемым двоично-десятичным кодом (BCD - Binary Coded Decimal).
Рис. 5.3. Форматы десятичных чисел: а - зонный; б – уплотненный
Используются два формата представления десятичных чисел (все числа рассматриваются как целые): зонный (распакованный) и уплотненный (упакованный). В обоих форматах каждая десятичная цифра представляется двоичной тетрадой, то есть заменяется двоично-десятичным кодом. Из оставшихся задействованных шести четырехразрядных двоичных комбинаций (24 = 16) две служат для кодирования знаков «+» и «-». Например, в ВМ семейства IBM 360/370/390 для знака «плюс» выбран код 11002 = С16 а для знака «минус» — код 11012 = D16 Числа в форме с плавающей запятой От недостатков чисел с ФЗ в значительной степени свободна форма представления чисел с плавающей запятой (ПЗ), известная также под названиями нормальной или полулогарифмической формы. В данном варианте каждое число разбивается на две группы цифр. Первая группа цифр называется мантиссой, вторая - порядком. Число представляется в виде произведения , где m- мантисса числа X, р — порядок числа, q — основание системы счисления. Для представления числа в форме с ПЗ требуется задать знаки мантиссы и порядка, их модули в q - ичном коде, а также основание системы счисления (рис. 5.4). Нормальная форма неоднозначна, так как взаимное изменение m приводит к «плаванию» запятой, чем и обусловлено название этой формы.
Рис. 5.4.Форма представления чисел с плавающей запятой
Диапазон и точность представления чисел с ПЗ зависят от числа разрядов, отводимых под порядок и мантиссу. На рис. 5.5. показаны диапазоны разрядностей порядка и мантиссы, характерные для известных ВМ.
Рис. 5.5. Типовые разрядности полей порядка и мантиссы
Помимо разрядности порядка и мантиссы диапазон представления чисел зависит и от основания используемой системы счисления, которое может быть отличным от 2. Например, в универсальных ВМ (мэйнфреймах) фирмы IBM используется база 16. Это позволяет при одинаковом количестве битов, отведенных под порядок, представлять числа в большем диапазоне. Так, если поле порядка равно 7 битам, максимальное значение, на которое умножается мантисса, равно 2128 (при ) или 16 128 (при ), а диапазоны представления чисел соответственно составят 10-19 < |Х| < 10+19 и 10-76 < |Х| < 10+76. Известны также случаи использования базы 8, например, в ВМ В-5500 фирмы Burroughs.
В большинстве вычислительных машин для упрощения операций над порядками последние приводят к целым положительным числам, применяя так называемый смещенный порядок. Для этого к истинному порядку добавляется целое положительное число — смещение (рис. 5.6.). Например, в системе со смещением 128 порядок -3 представляется как 125 (-3 + 128). Обычно смещение выбирается равным половине представимого диапазона порядков. Отметим, что смещенный порядок занимает все биты поля порядка, в том числе и тот, который ранее использовался для записи знака порядка. Рис. 5.6. Формат числа с ПЗ со смещенным порядком Мантисса в числах с ПЗ обычно представляется в нормализованной форме. Это означает, что на мантиссу налагаются такие условия, чтобы она по модулю была меньше единицы (), а первая цифра после точки отличалась от нуля. Полученная таким образом мантисса называется нормализованной. Для применяемых в ВМ систем счисления можно записать: · двоичная: Х = q2p (1 > - 1/2); · восьмеричная: X = q8p (1 > -1/8) · шестнадцатеричная: X = q16p 1 > - 1/16). Если первые i цифр мантиссы равны нулю, для нормализации ее нужно сдвинуть относительно запятой на i разрядов влево с одновременным уменьшением порядка на i единиц. В результате такой операции число не изменяется.
В примере для шестнадцатеричной системы после нормализации старшая цифра в двоичном представлении содержит впереди три нуля (0001). Это несколько уменьшает точность представления чисел по сравнению с двоичной системой при одинаковом числе двоичных разрядов, отведенных под мантиссу. Если для записи числа с ПЗ используется база 2 (q = 2), то часто применяют еще один способ повышения точности представления мантиссы, называемый приемом скрытой единицы. Суть его в том, что в нормализованной мантиссе старшая цифра всегда равна единице (для представления нуля используется специальная кодовая комбинация), следовательно, эта цифра может не записываться, а подразумеваться. Запись мантиссы начинают с ее второй цифры, и это позволяет задействовать дополнительный значащий бит для более точного представления числа. Следует отметить, что значение порядка в данном случае не меняется. Скрытая единица перед выполнением арифметических операций восстанавливается, а при записи результата — удаляется. Таким образом, нормализованная мантисса 0,101000(1) при использовании способа «скрытой единицы» будет иметь вид 0,010001 (в скобках указана цифра, не поместившаяся в поле мантиссы при стандартной записи).
Для более существенного увеличения точности вычислений под число отводят несколько машинных слов, например два. Дополнительные биты, как правило, служат для увеличения разрядности мантиссы, однако в ряде случаев часть из них может отводиться и для расширения поля порядка. В процессе вычислений может получаться ненормализованное число. В таком случае ВМ, если это предписано командой, автоматически нормализует его. Рассмотренные принципы представления чисел с ПЗ поясним на примере. На рис. 5.7. представлен типичный 32-битовый формат числа с ПЗ. Старший (левый) бит содержит знак числа. Значение смещенного порядка хранится в разрядах с 1-г о по 8-й и может находиться в диапазоне от 0 до 255. Для получения фактического значения порядка из содержимого этого поля нужно вычесть фиксированное значение, равное 128. С таким смещением фактические значения порядка могут лежать в диапазоне от -128 до +127. В примере предполагается, что основание системы счисления равно 2. Третье поле слова содержит нормализованную мантиссу со скрытым разрядом (единицей). Благодаря такому приему 23-разрядное поле позволяет хранить 24-разрядную мантиссу в диапазоне oт 0,5 до 1,0. Рис. 5.7. Типичный 32-битовый формат числа с плавающей запятой
На рис. 5.8. приведены диапазоны чисел, которые могут быть записаны с помощью 32-разрядного слова.
Рис. 5.8. Числа, представимые в 32-битовых форматах: а — целые числа с фиксированной запятой; б - числа с плавающей запятой
В варианте с ФЗ для целых чисел в дополнительном коде могут быть представлены все целые числа от -231 до 231 – 1, то есть всего 232 различных чисел (см. рис. 5.8, а). Для случая ПЗ возможны следующие диапазоны чисел (см. рис. 5.8, б). · отрицательные числа между -(1 – 2-24) х 2127 и - 0,5 х 2128; · положительные числа между 0,5 х 2-128 и (1 – 224) х 2127.
В эту область не включены пять участков: · отрицательные числа, меньшие чем -(1 – 2-24) х 2127 - отрицательное переполнение; · отрицательные числа, большие чем -0,5 х 2128 - отрицательная потеря значимости; · положительные числа, меньшие чем 0,5 х 2-128 - положительная потеря значимости; · положительные числа, большие чем (1 – 224) х 2127 - положительное переполнение.
Показанная запись числа с ПЗ не учитывает нулевого значения. Для этой цели используется специальная кодовая комбинация. Переполнения возникают, когда в результате арифметической операции получается значение большее, чем можно представить порядком 127 (2120 х 2100 = 2220). Потеря значимости — это когда результат представляет собой слишком маленькое дробное значение (2-120 х 2-100 = 2-220). Потеря значимости является менее серьезной проблемой, поскольку такой результат обычно рассматривают как нулевой. Следует также отметить, что числа в форме с ПЗ, в отличие от чисел в форме с ФЗ, размещены на числовой оси неравномерно. Возможные значения в начале числовой оси расположены плотнее, а по мере движения вправо — все реже (рис. 5.9.). Это означает, что многие вычисления приводят к результату, который не является точным, то есть представляет собой округление до ближайшего значения, представимого в данной форме записи.
Рис. 5.9. Плотность чисел с плавающей запятой на числовой оси
Для формата, изображенного на рис. 5.7. имеет место противоречие между диапазоном и точностью. Если увеличить число битов, отведенных под порядок, расширяется диапазон представимых чисел. Однако, Поскольку может быть представлено только фиксированное число различных значений, уменьшается плотность и тем самым точность. Единственный путь увеличения как диапазона, так и точности — увеличение количества разрядов, поэтому в большинстве ВМ предлагается использовать числа в одинарном и двойном форматах. Например, число одинарного формата может занимать 32 бита, а двойного - 64 бита. Числа с плавающей запятой в разных ВМ имеют несколько различных форматов. В табл. 5.1. приводятся основные параметры для нескольких систем представления чисел в форме с ПЗ. В настоящее время для всех ВМ рекомендован стандарт, разработанный общепризнанным международным центром стандартизации IEEE (Institute of Electrical and Electronics Engineers). Таблица 5.1.Варианты форматов чисел с плавающей запятой
Стандарт IEEE 754 Рекомендуемый для всех ВМ формат представления чисел с плавающей запятой определен стандартом IEEE 754. Этот стандарт был разработан с целью облегчить перенос программ с одного процессора на другие и нашел широкое применение практически во всех процессорах и арифметических сопроцессорах.
Рис. 5.10. Основные форматы IEEE754: а - одинарный; б – двойной Стандарт определяет 32-битовый (одинарный) и 64-битовый (двойной) форматы (рис. 5.10) с 8- и 11-разрядными порядком соответственно. Основанием системы счисления является 2. В дополнение, стандарт предусматривает два расширенных формата, одинарный и двойной, фактический вид которых зависит от конкретной реализации. Расширенные форматы предусматривают дополнитель ные биты для порядка (увеличенный диапазон) и мантиссы (повышенная точность). Таблица5.2 содержит описание основных характеристик всех четырех форматов. Не все кодовые комбинации в форматах IEEE интерпретируются обычным путем — некоторые комбинации используются для представления специальных значений. Предельные значения порядка, содержащие все нули (0) и все единицы (255 — в одинарном формате и 2047 — в двойном формате), определяют специальные значения.
Таблица 5.2.Параметры форматов стандарта IEEE754
Представлены следующие классы чисел: · Порядки в диапазоне от 1 до 254 для одинарного формата и от 1 до 2036 — для двойного формата, используются для представления ненулевых нормализованных чисел. Порядки смещены так, что их диапазон составляет от -126 до +127 для одинарного формата и от -1022 до +1023 - для двойного формата. Нормализованное число требует, чтобы слева от двоичной запятой был единичный бит. Этот бит подразумевается, благодаря чему обеспечивается эффективная ширина мантиссы, равная 24 битам для одинарного и 53 битам — для двойного форматов. · Нулевой порядок совместно с нулевой мантиссой представляют положительный или отрицательный 0, в зависимости от состояния бита знака мантиссы. · Порядок, содержащий единицы во всех разрядах, совокупно с нулевой мантиссой представляют положительную или отрицательную бесконечность, в зависимости от состояния бита знака, что позволяет пользователю самому решить, считать ли это ошибкой или продолжать вычисления со значением, равным бесконечности. · Нулевой порядок в сочетании с ненулевой мантиссой представляют ненормализованное число. В этом случае бит слева от двоичной точки равен 0 и фактический порядок равен -126 или -1022. Число является положительным или отрицательным в зависимости от значения знакового бита. · Кодовая комбинация, в которой порядок содержит все единицы, а мантисса не равна 0, используется как признак «не числа» (NAN — Not a Number) и служит для предупреждения о различных исключительных ситуациях.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|