Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Вещественные типы




В отличие от порядковых типов (все целые, символьный, логический), значения которых всегда сопоставляются с рядом целых чисел и, следовательно, представляются в памяти машины абсолютно точно, значение вещественных типов определяет число лишь с некоторой конечной точностью, зависящей от внутреннего формата вещественного числа.

ПРЕДСТАВЛЕНИЕ ВЕЩЕСТВЕННЫХ ЧИСЕЛ В ПАМЯТИ. В некоторых областях вычислений требуются очень большие или весьма малые действительные числа. Для получения большей точности применяют запись чисел с плавающей точкой. Запись числа в формате с плавающей точкой является весьма эффективным средством представления очень больших и весьма малых вещественных чисел при условии, что они содержат ограниченное число значащих цифр, и, следовательно, не все вещественные числа могут быть представлены в памяти. Обычно число используемых при вычислениях значащих цифр таково, что для большинства задач ошибки округления пренебрежимо малы.

Формат для представления чисел с плавающей точкой содержит одно или два поля фиксированной длины для знаков. Количество позиций для значащих цифр различно в разных ЭВМ, но существует, тем не менее, общий формат, приведенный на рис. 2.5, а. В соответствии с этой записью формат вещественного числа содержит в общем случае поля мантиссы, порядка и знаков мантиссы и порядка.

Однако чаще вместо порядка используется характеристика, получающаяся прибавлением к порядку такого смещения, чтобы характеристика была всегда положительной. При этом имеет место формат представления вещественных чисел, такой, как на рис. 2.5, б.

 

а) с порядком

Знак числа Порядок Знак порядка Мантисса

 

б) с характеристикой

Знак числа Характеристика Мантисса

Рис. 2.5. Формат представления вещественных чисел

 

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

Таким образом, для представления вещественных чисел в памяти ЭВМ порядок p вещественного числа представляется в виде характеристики путем добавления смещения (старшего бита порядка):

Х = 2n-1 + k + p, (2.1)

где n - число бит, отведенных для характеристики, p - порядок числа,

k - поправочный коэффициент фирмы IBM, -1 для форматов float, double.

Формулы для вычисления характеристики и количество бит, необходимых для ее хранения, приведены в табл. 2.2.

 

 

Таблица 2.2

Тип Характеристика Количество бит на характеристику
float X=27+p-1  
double X=210+p-1  

 

Следующим компонентом представляемого в машине числа с плавающей точкой является мантисса. Для увеличения количества значащих цифр в представлении числа и исключения переполнения при умножении мантиссу обычно подвергают нормализации. Нормализация означает, что мантисса (назовем ее F), кроме случая, когда F = 0, должна находиться в интервале

R-1 <= F < 1.

Для двоичной системы счисления R = 2. Тогда в связи с тем, что

2-1 <= F < 1, ненулевая мантисса любого хранимого числа с плавающей точкой должна начинаться с двоичной единицы. В этом и заключается одно из достоинств двоичной формы представления числа с плавающей точкой. Поскольку процесс нормализации создает дробь, первый бит которой равен 1, в структуре некоторых машин эта единица учитывается, однако не записывается в мантиссу. Эту единицу часто называют скрытой единицей, а получающийся дополнительный бит используют для увеличения точности представления чисел или их диапазона.

Приведенный метод нормализации является классическим методом, при котором результат нормализации представляется в виде правильной дроби, т.е. с единицей после точки и нулем в целой части числа. Но нормализацию мантиссы можно выполнить по-разному.

В IBM PC нормализованная мантисса содержит свой старший бит слева от точки. Иными словами нормализованная мантисса в IBM PC принадлежит интервалу 1 <= F < 2. В памяти машины для данных типа float, double этот бит не хранится, т.е. является "скрытым" и используется для увеличения порядка в формате float. Для положительных и отрицательных чисел нормализованная мантисса в памяти представлена в прямом коде.

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

Число бит для хранения мантиссы и порядка зависит от типа вещественного числа. Суммарное количество байтов, диапазоны допустимых значений чисел вещественных типов, количество значащих цифр после запятой в представлении чисел приведены в табл. 2.3.

 

Таблица 2.3

Тип Диапазон значений Значащие цифры Размер в байтах
float 1.4*10-38…3.4*1038 7-8  
double 4.9*10-308…1.8*10308 15-16  

 

АЛГОРИТМ ФОРМИРОВАНИЯ МАШИННОГО ПРЕДСТАВЛЕНИЯ ВЕЩЕСТВЕННОГО ЧИСЛА В ПАМЯТИ ЭВМ.

Алгоритм формирования состоит из следующих пунктов:

1). Число представляется в двоичном коде.

2). Двоичное число нормализуется. При этом для чисел, больших единицы, плавающая точка переносится влево, определяя положительный порядок. Для чисел, меньших единицы, точка переносится вправо, определяя отрицательный порядок.

3). По формуле из табл. 2.2 с учетом типа вещественного числа определяется характеристика.

4). В отведенное в памяти поле в соответствии с типом числа записываются мантисса, характеристика и знак числа. При этом необходимо отметить следующее:

* для чисел типа float, double характеристика хранится в младшем байте памяти;

* знак числа находится всегда в старшем бите старшего байта;

* мантисса всегда хранится в прямом коде;

* целая часть мантиссы (для нормализованного числа всегда 1) для чисел типа float, double.

 

МАШИННОЕ ПРЕДСТАВЛЕНИЕ ДАННЫХ ТИПА FLOAT. Формат машинного представления данных типа FLOAT следующий:

мл. байт ст. байт

7 … 0 15… 8 23 22 … 16 31 30…24 - номера разрядов памяти

м... м м... м х м... м s х... х

-16 -23 -8 -15 0 -1 -7 7 1 - показатели степеней разрядов мантиссы и характеристики,

где s - знаковый разряд,

х - характеристика числа,

м - нормализованная мантисса.

Например: 1). Число -15.375;

в двоичной системе счисления -1111.011;

нормализованное двоичное число -1.111011*23; р = 3.

Учитывая отбрасывание неявной единицы и сдвиг порядка, получаем:

S = 1; х = 27-1+3=27+21=130;

в двоичной системе счисления х = 10000010; м = 1110110...0;

машинное представление числа в формате FLOAT:

00000000 00000000 01110110 11000001

2). Число -0.1875;

в двоичной системе счисления -0.0011;

нормализованное двоичное число -1.1*2-3; р = -3.

Учитывая отбрасывание неявной единицы и сдвиг порядка, получаем:

S = 1; х = 27-1-3=27-22;

в двоичной системе счисления х = 01111100; м = 100...0;

машинное представление числа в формате FLOAT:

00000000 00000000 01000000 10111110

3). Десятичное число 4.5;

аналогичные выкладки дают нормализованную мантиссу: 1.00100...0;

машинное представление числа:

00000000 00000000 10010000 01000000

4). Значения верхней и нижней границ чисел отрицательного диапазона

~-3.4*1038 - 11111111 11111111 01111111 11111111

~-.4*10-38 - 00000001 00000000 00000000 10000000

 

МАШИННОЕ ПРЕДСТАВЛЕНИЕ ДАННЫХ ТИПА DOUBLE. Формат машинного представления данных типа DOUBLE следующий:

 

мл.байт ст.байт

7 0 15 8 23 16 31 24 39 32 47 40 55 52 51 48 63 56

м... м м... м м... м м... м м... м м... м х..х м... м s x … x

-44 -50 -37 -43 -29 -36 -21 -28 -13 -20 -5 -12 3 0 -1 -4 10 4

 

где верхняя строка цифр от 0 до 63 - номера разрядов памяти;

нижняя строка цифр от -50 до -1 - показатели степеней разрядов мантиссы;

от 0 до 10 - разрядов характеристики;

s - знаковый разряд числа;

м - нормализованная мантисса;

х - характеристика числа (x = 210-1+p,

где p - порядок нормализованного числа).

Например: 1). Число 15.375;

в двоичной системе счисления 1111.011;

результат нормализации 1.111011*23; р = 3.

Учитывая отбрасывание скрытой единицы и сдвиг порядка, получаем:

s = 0; x = 210+3 = 210+21 = 1026;

в двоичной системе счисления х = 10000000010; m = 1110110...0;

машинное представление числа в формате DOUBLE:

0 00000000 00000000 00000000 00000000 31

32 00000000 11000000 00101110 01000000 63

2). Десятичное число 0.0375;

в двоичной системе счисления 0.011;

результат нормализации 1.1*2-2; р = -2.

Учитывая отбрасывание скрытой единицы и сдвиг порядка, получаем:

s = 0; x = 210-21-20 = 210-3;

в двоичной системе счисления х = 01111111101; m = 100...0;

машинное представление числа в формате DOUBLE:

0 00000000 00000000 00000000 00000000 31

32 00000000 00000000 11011000 00111111 63

3). Десятичное число 2.5;

аналогичные выкладки дают нормализованную мантиссу: 1.0100...0;

машинное представление числа 2.5:

00000000 00000000 00000000 00000000

00000000 00000000 00000100 01000000

4). Значения верхней и нижней границ диапазона положительных чисел:

~1.8*10^308 - 11111111 11111111 11111111 11111111

11111111 11111111 11101111 01111111

~4.9*10^(-308) - 00000001 00000000 00000000 00000000

00000000 00000000 00000000 00000000

Символ ~ обозначает приближенное значение числа.

 




Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 376; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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