32位浮点数的一些理解
1、定点的缺点:对于一个系统可能出现一些特别大的数和特别小的数,如果用定点表示就会很僵硬,位数一定就不能同时表达特别大的数和特别小的数。
2、对于定点123.625,用科学计数法的方式可以写成1.23625*10^2,也可以写成12.625*10^1或1.111011101*2^6。。。。。为了规范,IEEE就规定了32位浮点的格式如下
3、翻译一下
(1)最高位是符号位,“0”代表正,“1”代表负。
(2)接下来的8位是指数位,8位可表示整数的范围是0-255,考虑指数可以是负的,IEEE规定在上面的范围减去127,并将-127(全0)和128(全1)用做特殊值处理,所以指数的位的范围是(-127,128)。
(3)最低的23位是小数位(尾数位),正常是可以表示23位的范围,但是IEEE规定小数点左侧必须为1,右侧位数不够补0。这样可以就可以省略1,可以用23位来表示24位。
eg. 1.111011101*2^6中,小数位是111011101+补14个0
4、定点转浮点实例:123.625用32位浮点表示
科学计数法=1.111011101*26(整数部分:123=01111011b,小数部分:0.625=0.101b,整数部分除2取余,倒序排列,高位补零;小数部分乘2取整,顺序排列)
符号位:0
指数位:6+127=10000101
小数位:11101110100000000000000
即:01000010111101110100000000000000=0x42F74000
5、验证:
6、浮点转定点实例:42F74000=01000010111101110100000000000000,拆分为符号位、指数位、小数位。
(1)符号位:0
(2)指数位:10000101=133,实际指数=133-127=6
(3)小数位:11101110100000000000000去掉后面的0、前面补1为1. 111011101
即科学计数法表示为1. 111011101*26=(2^0+2^-1+2^-2+2^-3+2^-5+2^-6+2^-7+2^-9)*2^6=123.625。