Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






И п л а в а ю щ е й з а п я т о й






 

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

Представим, что в условном ПК (например, на калькуляторе) разрядная сетка содержит 10 десятичных разрядов:

 

                   

1 2 3 4 5 6 7 8 9 10

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

Поставим разделяющую запятую, например, между шестым и седьмым разрядами. Тогда первые 6 разрядов сетки представляют целую часть числа, а последние 4 разряда - его дробную часть. Максимальное значение числа в этом случае равно 999999, 9999; минимальное - 0, 0001. Следовательно, при такой разрядной сетке обработка чисел может быть организована лишь в диапазоне 0, 0001.. 1000000, что явно недостаточно.

Если в разрядной сетке машины запятая, разделяющая целую и дробную части числа, фиксирована в заранее определенной позиции, то получаемые в этом случае числа называют числами с фиксированной запятой.

 

В ПК, как правило, применяют один из двух способов представления чисел с фиксированной запятой:

1) запятая фиксирована перед старшим разрядом; в этом случае число имеет только дробную часть и не имеет целой части;

2) запятая фиксирована после младшего разряда; в этом случае число имеет только целую часть и не имеет дробной части.

Наиболее часто применяется второй способ.

 

Числа с плавающей запятой имеют следующую форму представления:

,

где - мантисса; - порядок; 10 - основание системы счисления, записанное в этой же системе ( = 2; = 8; = 16). Это так называемая экспоненциальная (или показательная) форма записи числа.

Например, число 358, 5 можно записать в виде

3, 585 × = 358, 5 × = 3585, 0 × = 0, 003585 × .

Чтобы обеспечить единственность представления числа, по стандарту IEEE 754 на мантиссу накладывается следующее ограничение:

1 £ < 10 (в данной c/c).

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

В разрядной сетке машины часть разрядов выделяется для мантиссы, а часть - для порядка числа.

Предположим, что в приведенной ранее разрядной сетке для мантиссы отведено 8 разрядов, а для порядка - 2 разряда (знак числа и знак порядка временно не рассматриваются). Тогда максимальное значение мантиссы составляет 9, 9999999, что примерно равно 10. Таким образом, в мантиссе слева от запятой до применения порядка находится ровно один знак. В такой форме любое число (кроме 0) записывается единственным образом. Ноль же представить таким образом невозможно. Максимальное значение порядка равно 99; число имеет максимальное значение 10 × , что достаточно для любых практических применений.

 

Сравним выполнение операции сложения для чисел с фиксированной запятой (целых чисел) и чисел с плавающей запятой.

Пусть = 78535, = 416. В формате целых чисел они имеют вид = 0000078535, = 0000000416. Их сумма получается по обычному правилу сложения:

 

0 0 0 0 0 7 8 5 3 5

+ 0 0 0 0 0 0 0 4 1 6

¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾

0 0 0 0 0 7 8 9 5 1

 

В формате с плавающей запятой заданные числа имеют вид

= 7, 8535 × , = 4, 16 × ,

или в машинном представлении = 7853500004, = 4160000002.

 

Непосредственно складывать мантиссы, если слагаемые имеют разные порядки, нельзя. В этом случае сложение должно выполняться в следующей последовательности:

1) Определяется разница порядков слагаемых ; здесь имеем = 2.

2) Если D > 0, то сдвигается вправо на D разрядов; если D < 0, сдвигу подвергается ; при D = 0 сдвиг не производится.

В данном примере после сдвига получим:

= 7, 8535000; = 0, 0416000

3) Выполняется сложение мантисс

= 7, 8951000

4) Результату приписывается максимальный из порядков слагаемых

= max() = 4

В результате получаем

= 7895100004

При сложении мантисс может иметь место случай > 10 (например, для = 8 × , = 7 × ). Тогда получаемый результат нужно нормализовать, т.е. суммарную мантиссу сдвинуть на один разряд вправо, а к порядку добавить 1.

 

Из примера видно, что способ сложения чисел с плавающей запятой более сложный по сравнению со сложением целых чисел. Следовательно, для выполнения арифметических операций над числами с плавающей запятой требуется больше машинного времени процессора, чем для выполнения таких же операций по отношению к целым числам. В связи с этим практически в любом ПК числа представлены как в формате с фиксированной запятой, так и в формате с плавающей запятой. При программировании рекомендуется применять в первую очередь целые числа, если это возможно по условиям задачи. Обычно целочисленные переменные в программе определяют объекты, которые могут принимать только целые значения (количество предметов, порядковый номер предмета и т.п.). Числа с плавающей запятой отображают вещественные числа, которые в технических задачах определяют, как правило, результаты измерения каких-либо параметров (длина, вес, площадь, время и т.п.).

 

В заключение рассмотрим вопрос о происхождении названия " число с плавающей запятой".

 

Пусть в разрядной сетке условной машины содержится число

|¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ u ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ¾ ®|¾ p ¾ ®|

                   

т.е. число = 5, 86591 × = 58, 6591.

Если рассматривать его как число с фиксированной запятой, то разделяющая запятая должна быть поставлена после второго разряда ( = 1).

 

Для числа

                   

запятая будет установлена после третьего разряда ( = 586, 591; = 2).

 

Для числа

                   

запятая устанавливается после четвертого разряда ( = 5865, 91) и т.д.

 

При этом создается впечатление, что запятая " плавает" по разрядной сетке при изменении порядка числа.

 

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.