Представление рациональных чисел в двоичном коде с плавающей запятой 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Представление рациональных чисел в двоичном коде с плавающей запятой



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

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

2 · 105; 1,6 · 10–38.

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

А теперь рассмотрим промышленные стандарты, используемые для представления чисел с плавающей запятой в компьютерах. Существует стандарт IEEE 754 для представления чисел с одинарной точностью (float) и с двойной точностью (double). Для записи числа в формате с плавающей запятой одинарной точности требуется 32-битовое слово. Для записи чисел с двойной точностью требуется 64-битовое слово. Чаще всего числа хранятся в нескольких соседних ячейках памяти процессора. Форматы одинарной точности и удвоенной точности числа с плавающей запятой приведены на рис. 18.16.

Рис. 18.16 Форматы чисел с плавающей запятой

На рис. 18.16 над полями числа с плавающей запятой показан номер двоичного разряда, а внизу двоичный вес каждого разряда. При этом буквой S обозначен знак числа, 0 — это положительное число, 1 — отрицательное число, e обозначает смещенный порядок числа. Смещение требуется, чтобы не вводить в число еще один знак. Смещенный порядок — всегда положительное число. В формате одинарной точности для порядка выделено 8 битов. Для смещенного порядка двойной точности отводится 11 битов. Для формата одинарной точности принято смещение 127, а для формата двойной точности — 1023. В десятичной мантиссе числа стандартного вида старший разряд — это цифра от 1 до 9. Старший разряд двоичной мантиссы — всегда 1. Поэтому для хранения старшей единицы двоичной мантиссы не выделяется отдельный бит. Единица подразумевается, как и запятая, отделяющая дробную часть от целой. Кроме того, в формате чисел с плавающей точкой принято, что мантисса всегда больше 1. То есть значения мантиссы лежат в диапазоне от 1 до 2.

Рассмотрим несколько примеров:

1. Определить число с плавающей запятой, лежащее в четырех соседних байтах:

11000001 01001000 00000000 00000000.

· Знаковый бит, равный 1, показывает, что число отрицательное.

· Экспонента 10000010 в десятичном виде соответствует числу 130. Вычтя число 127 (смещение) из 130, получим число 3.

· Теперь запишем мантиссу с учетом неявной единицы:
100 1000 0000 0000 0000 0000 соответствует 1,1001

· И, наконец, определим десятичное число: 1100,12=12,510

2. Определить число с плавающей запятой, лежащее в четырех соседних байтах:

11000011 00110100 00000000 00000000.

· Знаковый бит, равный 1, показывает, что число отрицательное.

· Экспонента 10000110 в десятичном виде соответствует числу 134. Вычтя число 127 из 134, получим число 7.

· Теперь запишем мантиссу: 011 0100 0000 0000 0000 0000 соответствует 1,01101

· И, наконец, определим десятичное число: 101101002=18010

Для того чтобы записать ноль в коде с плавающей запятой, достаточно записать в смещенный порядок число 000000002. Значение мантиссы при этом не имеет значения. Число, в котором все байты равны 0, тоже попадает в этот диапазон значений. Именно его обычно и используют для записи нуля в коде с плавающей запятой.

Бесконечность соответствует смещенному порядку 111111112 и мантиссе, равной 1,0. При этом существует минус бесконечность и плюс бесконечность (переполнение и антипереполнение), которые часто отображаются на экране дисплея как +INF и –INF.

При таком значении порядка все остальные комбинации битов в мантиссе (в том числе и все единицы) воспринимаются как не числа и отображаются на экране как NaN.



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 444; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.93.207 (0.005 с.)