什么是浮点数
言简意赅的理解就是浮点数是小数点不固定的数能表示更大范围的数。
二进制数N 就可以表示为 N=2^E *
F。这里的E是2的幂,由于不好写出来,就只能这样写了 ,E 代表的是阶码,F(M)表示尾数 这种表示法叫做浮点数表示法
阶符 | 阶码 | 数符 | 尾数 |
---|
阶符,数符的范围是[0,1]的整数 0代表正数 1代表负数。
单精度浮点数范围
浮点数字长 | 范围 |
---|---|
尾数长度 | 23 |
符号位长度 | 1 |
指数长度E | 8 |
最大指数 | +127 |
最小指数 | -127 |
指数偏移量 | 127 |
IEEE754标准 需要把浮点数进行规格化 且 浮点数表示形式如下
十进制数转换成32位浮点数表示形式:
例如:176.0625 先转换成二进制表示:10110000.0001
规格化处理后:1.011 0000 0001*2的七次方(相当于把小数点左移了7位),类比十进制的科学计数法
自我理解 :S E M
S 表示是否是负数 0为正 1为负
E:阶码的二进制数
M:尾数的二进制数
此时 S=0(正数) E=7+127 :因为指数的偏移量是127 E=134=(二进制)1000 0110 尾数 F=0110 0000 0000 0000 0000 000(就是规格化处理后小数点的后面的数不够23位则添0凑足23位) E是正数 因此 S E M 所以 计算得出 0 10000110 011 0000 0001 0000 0000 0000
十进制数: -123.5 转换成 浮点数
负数转浮点数技巧,先不管符号 直接按照正数转成二进制
S:1(因为是负数所以直接为1) 先转二进制: 011 1011 .1(首位是符号位) 规格化:1.111 0111 2^7 E=127+6=133=(二进制)1000 0101
M:1110 1110 0000 0000 0000 000() · · 因此 -123.5的浮点数为 :1 10000101 111 0111 0000 0000 0000 0000