1,在C语言家族的编程语言中,常用到的是单精度浮点数(single precision)和双精度浮点数(double precision)。它们的 表示方法如下:
Sign:0代表正数,1代表负数(no surprise)
Exponent:8位的二进制数值,可以表示0~255范围的256个数,。。。等等。。。进行幂的计算时是有正有负的,不需要as before留出第一位作为符号位吗?
由于sign已经是符号位了,在阶码中再弄一个符号位会导致补码功能失效(为啥?有待下次探究)。
这里使exponent有正有负的操作是减去127,所以它的范围是-127到128。
Mantissa:尾数,相当于十进制科学计数法中小数点后面的数,具体使用时是(1+Mantissa)
2,例子
2.1 十进制化成二进制浮点数:
用二进制表示出来为
化成规范化数为
Sign:
1
exponent:
由于最高阶为6,则阶码为6+127=133,二进制形式为
Mantissa:
10010000111010000111001011 (尾数不够用了,去掉后面三位,使得总数为23位)。
综上,在计算机中的存储形式为11000010110010000111010000111001(一共32字节)。
2.2 浮点数化成二进制数:
,中间省略20个零。
拆解成三部分:
1:符号位,是个负数;
01111110:阶码位,126-127=-1
10…0:尾数
结果为