目前计算机在表示浮点数是采用IEEE 754标准,该标准的诞生为科学应用程序在不同机器上的可移植性奠定了基础
IEEE 754标准- 符号位s,决定这是一个正数还是一个负数。当s=0时为正数,s=1时为负数
- M位,即有效数字位,该值是一个二进制小数,它的范围是大于1小于2
- E指数位,又称阶码位,作用是对浮点数进行加权
IEEEE 754规定,数字系统中的浮点数是对数学中小数的近似,同时规定表达浮点数的0,1序列被分为三部分
规则示例(3.14的表示)- 首先将十进制小数转成二进制小数11.0010001111010111
- 将二进制小数转为IEEE浮点数标准格式,即1.10010001111010111x21
- 对照上图,sign符号位为0,表示正数,exponent表示科学计数法的指数部分(这里的指数并不是计算出来的指数,而是计算出来的指数加上偏移量,对于32位单精度浮点数来说,偏移值为127,所以component的值为127 1=128),二进制表示为10000000。
- fraction表示有效数字位,又叫尾数。即10010001111010111。再补齐只23位,即10010001111010111000000
- 因此32位单精度浮点数3.14在计算机中被表示为:0 10000000 10010001111010111000000
对于64位双精度浮点数来说,exponent段为11位,偏移值为1023,fraction长度为52位
写在最后浮点数终究只是小数的近似,不可能完全描述。因为浮点数的位数终究是有限的,也就是说他所能表现的总是有限个有理数