一.概况
根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数都可以表示为
以下形式:
V=(-1)^s*M*2^E
1.(-1)^表示符号位,当s=0时,V为正数;当s=1,V为负数。
2.M表示有效数字,M是大于等于1,小于2的。
3.2^E表示指数。
二.存储过程
IEEE754对有效数字M和指数E,还有一些特别的规定。
M: 根据前面的介绍M可以写成1.xxxxxxxx的形式,在计算机内部存储时默认这个数的第一位
有效位数字总为1,故在内存中只需要保存小数点后面的数字(二进制表示),等到读取数据的时
候再把前面的1 补上去。这样也可以使小数点后面的有效位保留的更精确。
E: E为一个无符号整数(0~255/0~2047),它在 内存中存储的时候需要找一个中间数
(127/1023)。比如2^10的指数E为10,所以E保留在内存中的数字为137,即10001001。
三.浮点数从内存中取出的过程
标签:0000,有效数字,浮点数,C语言,二进制,内存,127 From: https://blog.csdn.net/2302_79546368/article/details/136791193浮点数从内存中取的时候分为三种情况:
·E不全为0或1 :由前面放(存取)的过程倒着来就可以。
eg:0.5的二进制的形式为0.1,由于规定正整数部分必须为1,即小数点向右移动一位,则为1.0*2^(-1),其阶码为-1+127=126,表示为01111110,而尾数1.0去掉整数部分为0,补齐0到23位0000 0000 0000 0000 0000 000
其二进制形式表示为0 01111110 0000 0000 0000 0000 0000 000
·E全为0: 这时,浮点数的指数E等于1-127(1023)即为真实值,有效数字M不在加上第一位的1,而是还原为0.xxxxxxxx的小数。这样做是为了表示+(-)0,以及接近很小的数字。
·E全为1:这时,如果有效数字M全为0,表示+(-)无穷大(正负号取决于符号位s).