浮点类型
- float
- double
- long double
单精度浮点型 | float | 4个字节 |
---|---|---|
双精度浮点型 | double | 8个字节(默认) |
复数浮点型 | \ | \ |
存储
单精度浮点值:
32位=1(符号位)+8(指数位)+23(尾数位)
-
符号位(1个位):
0正,1负 -
指数位(8个位):(浮点数的取值范围)
(存储范围:0~ (127) ~255,相当于unsigned char)
因实际指数存在负数:
实际指数+127(偏移量) = 存储指数
指数取值范围:-127 ~ 127
浮点数的取值范围(2指数): 10-38 ~1038 -
尾数位(23个位):(浮点数的有效值)
存储的是1.后面的值,不足补0
尾数位的存储精度(有效个数):6 ~ 7位
223 = 8388608——7-1=6位(只能精确表示6位,表示部分7位)
例:0~30 ——1位(只能精确表示1位,无法表示31 ~ 99)
例:
对于:12.5二进制=1100.1
1100.1=1.1001*23(科学计数法)
指数位:3(实际指数) —— 3+127 = 130(存储指数)=1000 0010
尾数位:1001+19个0
存储:0 10000010 10010000000000000000000
二进制:0100 0001 0100 1000 0000 0000 0000 0000
十六进制:4 1 4 8 0 0 0 0
真实地址:00004841
关于真实地址存储
例:0x12345678
小端:低地址放低数据(PC、inter)
78 56 34 12
大端:低地址放高数据(手机ARM,网络)
12 34 56 78
双精度浮点值:
64位=1(符号位)+11(指数位)+52(尾数位)
-
符号位(1个位):
0正,1负 -
指数位(11个位):
0~ (1023) ~2047
实际指数+1023 = 存储指数 -
尾数位(52个位):有效值
存储的是1.后面的值,不足补0
尾数~精度(有效个数):15 ~ 16位
252——16-1=15位
例:
对于:12.75二进制=1100.11
1100.11=1.10011 * 23(科学计数法)
指数位:3(实际指数) -> 3+1023 = 1026(存储指数)=100 0000 0010
尾数位:10011+48个0
存储:0 10000000010 10011000000000……0000000000