Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
200801_Lec_03_1.pdf
Скачиваний:
19
Добавлен:
16.03.2015
Размер:
421.2 Кб
Скачать

Десятичное

Беззнаковое

Знак-и-число

Дополнение

Дополнение

Смещение на

число

целое

 

до единицы

до двух

7

 

 

 

 

 

 

-3

нет

1011

1100

1101

0100

 

 

 

 

 

 

-4

нет

1100

1011

1100

0011

 

 

 

 

 

 

-5

нет

1101

1010

1011

0010

 

 

 

 

 

 

-6

нет

1110

1001

1010

0001

 

 

 

 

 

 

-7

нет

1111

1000

1001

0000

 

 

 

 

 

 

-8

нет

нет

нет

1000

нет

 

 

 

 

 

 

1.3.3 Числа с плавающей точкой. Стандарт IEEE-754

Числа с плавающей точкой представлены в двух частях: двоичная дробь и двоичная степень.

Двоичные дроби:

 

 

 

 

 

 

Обычная дробь 0.527 представляется как сумма чисел:

5

 

2

 

7

со

10

100

1000

знаменателями, представляющими возрастающие степени числа 10. В двоичной дроби для знаменателей используется степень числа два, при этом двоичная дробь 0.101 представляется

в виде:

1

 

0

 

1

, что в десятичной системе соответствует:

0.5 0.0 0.125=0.625 .

2

4

8

Многие дроби, типа 1/3, не могут быть точно представлены в десятичной записи, а также в двоичной записи. Действительно, единственные дроби, которые могут быть представлены точно — это комбинации множителей, таких как 1/2. Следовательно, 3/4 и 7/8 могут быть представлены в точности двоичной дробью, но 1/3 и 2/5 таким образом не могут быть представлены.

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

Стандарт IEEE для арифметики чисел с плавающей запятой (IEEE Standard for Binary Floating-Point Arithmetic (IEEE 754)) – наиболее широко используемый при операциях с плавающей запятой стандарт, ему следует большинство процессоров. Этот стандарт устанавливает требования к представлению чисел с плавающей запятой (включая ±0 и денормализованные числа) и специальных значений (бесконечность и не-число (NAN)), а также включает указания по выполнению операций с этими числами.

Двоичные числа с плавающей запятой хранятся в формате "знак-и-число", как показано ниже:

Здесь старший бит является знаковым битом, экспонента – это смещённая степень, а мантисса – это значение мантиссы без старшего бита мантиссы.

1.3.3.1 Смещение степени

Значение степени числа смещено на 2e − 1 − 1. Смещение производится, т.к. в экспоненте должны хранится числа со знаком, чтобы представить должным образом как большие числа, так и достаточно малые (т.е. отрицательные степени).

Например, чтобы представить число в 17-й степени, записывается экспонента 17 + 2e − 1 − 1.

1.3.3.2 Мантисса

Старший бит мантиссы определяется значением экспоненты.

Если 0 < экспонента < 2e − 1, то старший бит мантиссы равен 1, число в таком случае называется нормализованным.

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

Специальные случаи:

1.Если экспонента равна 0 и мантисса равна 0, значение числа ±0 (в зависимости от знакового бита)

2.Если экспонента равна 2e − 1 и мантисса равна 0, число равно ±бесконечности (в зависимости от знакового бита)

3.Если экспонента равна 2e − 1, а мантисса НЕ равна 0, то в памяти записано не-число (NAN, not-a-number).

1.3.3.3 Числа с плавающей запятой одинарной точности, 32 бита

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

Степень числа смещается на 28 − 1 − 1 = 127 перед записью в память, таким образом, стандартом предусматривается возможный диапазон степеней от −126 до +127. Степень -127 смещается до значения экспоненты 0, но данное значение зарезервировано для представление денормализованных чисел или нуля. Степень +128 смещается до значения 255, но числа с такой экспонентой – это бесконечность или не-числа.

Приведём пример – запишем число −118.625, используя стандарт IEEE 754.

1.Определим знак, экспоненту и мантиссу. Т.к. число отрицательное, знаковый бит установим в "1".

2.Запишем модуль числа в двоичном виде, получим 1110110.101.

3.Запишем число в представлении мантисса × 2степень, так чтобы слева от точки осталось только одно число: 1110110.101 = 1.110110101 × 26. Это нормализованное число с плавающей запятой. Мантисса находится справа от разделителя целой и

дробной части. Значение мантиссы запишем, начиная с её старшего бита, а оставшееся место заполним нулями. Получим 11011010100000000000000.

4.Степень числа равна шести, её надо преобразовать в двоичное число (110) и сместить на 127: 6 + 127 = 133. В двоичном виде это даст 10000101.

Таким образом, получим следующее представление:

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