浮点型数据的储存
- float 单精度浮点型
float型数据占4个字节,32位
1位符号位,8位表示阶码,后23位表示尾数
在IEEE 754浮点数标准中,float型数据阶码有8位,可以表示的阶码范围为0~ 255,偏置常数为127,阶的范围为-127 ~ 128,因为全零阶码和全1阶码有其他用处(下面写),所以可以表示的阶实际上为-126~127
尾数用原码表示,规格化尾数第一位总为1(对阶),因而可以在尾数中缺省第一位的1,该缺省为为隐藏位,隐藏一位后是的单精度格式的23位尾数实际上表示了24位尾数。
例如float型数据1.2在内存中的储存:
1.25:
首先符号为正,所以符号位为0,1.25转换为2进制为1.01,1.10*2º不需要对阶,首位1省去,23尾数为尾数中只写小数部分,阶为0,所以阶码为0+127,转换为二进制为0111 1111
所以1.25在内存中的储存为0111 1111 1010 0000 0000 0000 0000 0000
0.375:
符号位正,符号位为0,0.375 转换为二进制为0.011,即1.10*2^(-1),阶为-1,阶码为0111 1110
所以0.375在内存中储存为0111 1110 1100 0000 0000 0000 0000 0000
十进制小数转换为2进制
十进制小数 * 2 取整,自上而下取整数
例如:0.375转换为二进制
全0阶码,全0尾数
表示:+0/-0,一般情况下+0和-0是等效的。
全0阶码,非0尾数
表示:非规格化尾数
全1阶码,全0尾数
表示:+∞/-∞
全1阶码,非0尾数
表示:NaN(非数)
可表示的十进制小数精度
因为float型数据有23位尾数,2²³ = 8,388,608,是七位数字,所以float最多可以保留7位有效数字,但绝对能保证的只有6位,所以说float型数据可以保留6~7位小数
- double 型数据
double型数据占8个字节,64位
1位符号位,11位阶码,后面52位为尾数,偏置常数为1023
其他大致与float型数据相同