русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

И П Л А В А Ю Щ Е Й З А П Я Т О Й


Дата добавления: 2014-11-27; просмотров: 697; Нарушение авторских прав


 

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

Представим, что в условной ЭВМ (например, на калькуляторе) разрядная сетка содержит 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 можно записать в виде

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

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

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

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

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

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

 

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

Пусть = 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

 

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

= 0,78535 × , = 0,416 × ,

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

 

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

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

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

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

= 0,78535000; = 0,00416000

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

= 0,78951000

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

= max( ) = 5

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

= 7895100005

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

 

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

 

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

 

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

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

т.е. число = 0,586591 × = 5,86591 .

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

 

Для числа

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

 

Для числа

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

 

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

 

 



<== предыдущая лекция | следующая лекция ==>
Сложение и вычитание в 2, 8 и 16 c/c. | П Р Е Д С Т А В Л Е Н И Е И Н Ф О Р М А Ц И И В П Э В М


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.303 сек.