пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Вещественные типы в языке Си и операции с переменными этого типа

Для определения данных, представляющих число с плавающей точкой, используются ключевые слова float,double,long double.

Величина типа float занимает в памяти 4 байта, из которых 1 бит отводится для знака, 8 битов для порядка и 23 бита для мантиссы [6]. Порядок хранится в виде двоичного положительного числа, которое получается при сложении величины порядка и числа 127 (11111112). Мантисса хранится в нормализованном виде, т. е. ее значение должно быть в диапазоне от 1 до 2, а старший бит равен 1. Если нормализация мантиссы нарушается, выполняется сдвиг мантиссы до тех пор, пока старшей цифрой не окажется единица, одновременно при каждой операции сдвига мантиссы происходит изменение величины порядка. Так как старшая цифра в нормализованной мантиссе – единица, она отбрасывается. Отброшенная единица называется неявной единицей. Диапазон значений переменной с плавающей точкой приблизительно равен от 3.4E–38 до 3.4E+38 , а точность (количество значащих цифр) равна 7.

Рассмотрим, каким образом в ячейках памяти, выделенных под переменную типа float, хранится конкретное число.

Пусть float x=5.375; в двоичной системе x2=101.011 или x2=1.01011•210+1111111 , тогда с учетом того, что в нормализованной мантиссе первая цифра всегда 1, и эта единица отбрасывается, а порядок сдвигается на 127, получаем внутреннее представление числа x.

x

0

1

0

0

0

0

0

0

1

0

1

0

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

 

31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

 

Знак

Порядок

Мантисса

Величина типа double занимает 8 байт в памяти, формат которой аналогичен формату float. Биты памяти распределяются следующим образом: 1 бит – знак, 11 битов – порядок и 52 бита – мантисса. Порядок сдвигается на величину 1023. С учетом опущенного старшего бита мантиссы диапазон значений равен от 1.7E–308 до 1.7E+308, а точность составляет 15 десятичных значащих цифр.


27.12.2014; 10:42
хиты: 99
рейтинг:0
Точные науки
информатика
Языки программирования
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь