Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТСИС.doc
Скачиваний:
170
Добавлен:
11.05.2015
Размер:
1.18 Mб
Скачать

9. Нормализованные и денормализованные числа.

Нормализация чисел

– Нормализованное значение – мантисса не принимает «крайние»

значения (одни нули или одни единицы)

– Денормализованное значение – мантисса либо ноль, либо 11…11

Нормализованное число

• Значение: float f = 15213.0;

1521310 = 111011011011012 = 1.11011011011012 x 213

• Мантисса

M = 1.11011011011012

frac = 110110110110100000000002

• Экспонента

E = 13

Смещение = 127

Exp = E + Смещение = 140 = 100011002

• Итого:

0 10001100 11011011011010000000000

s exp frac

Денормализованное число - вид чисел с плавающей точкой, определенный в стандарте IEEE 754. При записи в форматах float, double, long double их экспонента будет записана как 0. Для получения их значения не требуется использование неявной единицы; мантисса просто умножается на наименьшую для данного формата экспоненту.

• Условие: exp = 000…0

• Значение экспоненты: E = –Смещение + 1

(вместо E = 0 – Смещение)

• Мантисса кодируется с ведущим 0: M = 0.xxx…x2

– xxx…x: биты поля frac

• Примеры

– exp = 000…0, frac = 000…0

• Представляет число ноль

• Различные кодировки для +0 и –0

– exp = 000…0, frac ≠ 000…0

• Кодируются числа близкие к 0.0

• Распределены по числовой прямой с равным шагом

Особые числа

• Условие: exp = 111…1

• Пример: exp = 111…1, frac = 000…0

– Представляет бесконечно большое число. (как положительное, так и отрицательное)

– Требуются для операций в которых может произойти переполнение

1.0/0.0 = −1.0/−0.0 = +.

1.0/−0.0 = −.

• Пример: exp = 111…1, frac ≠ 000…0

– Not-a-Number (NaN)

– Используется в ситуациях, когда значение операции не определено

sqrt(–1)

∞ - ∞

∞ х 0

Диапазоны значений

10. Арифметические операции в формате с плавающей точкой.

Сложение чисел с плавающей запятой

1. Уравниваются порядки слагаемых, для чего меньший порядок увеличивается до значения большего, а мантисса этого числа денормализуется, т. е. сдвигается вправо на столько разрядов, на сколько единиц увеличен порядок.

2. Мантиссы слагаемых складываются в модифицир. обратном либо в модифицир. доп. коде по правилам сложения чисел с фиксированной запятой.

В результате сложения может оказаться 3 ситуации:

1. Нет переполнения и денормализации

2. Произошло переполнение

3. Произошла денормализация

Умножение чисел с плавающей запятой.

1. Определяется знак путем сложения по mod 2 знаков мантисс.

2. Определяется предварительный порядок произведения путем алгебраического сложения порядков сомножителей в модифицированном дополнительном или обратном коде по рассмотренным ранее правилам.

3. Перемножаются модули мантисс сомножителей по правилам перемножения чисел с запятой, для получения мантиссы произведения.

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

5. Если необходимо, то мантиссу произведения округляют.

Деление чисел с плавающей запятой

1. Определяется знак мантиссы частного путем сложения по mod 2 знаков делимого и делителя.

2. Определяется предварительное значение порядка частного путем вычитания порядка делителя из порядка делимого с учетом их знака в модифицированном дополнительном коде.

3. Определяется модуль мантиссы частного по правилам деления чисел с фиксированной запятой, однако при этом нет надобности определять – мантисса делимого больше или меньше мантиссы делителя. Если мантисса делимого больше мантиссы делителя, то произойдет переполнение разрядной сетки. Если наоборот, то не будет.

4. Если произошло переполнение разрядной сетки, то мантисса частного сдвигается на один разряд вправо и к предварительному порядку частного прибавляется единица.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]