小数在计算机中的表示

来源:互联网 发布:手机蓝牙控制app 源码 编辑:程序博客网 时间:2024/05/29 04:34

    扩展一下用二进制权值加权表示一个数的内容:用二进制表示整数,eg:1110=1*2^3+1*2^2+1*2^1+0*2^0;那对于用二进制如何表示小数呢,答案还是用加权形式,只不过权重不一样而已eg:1110.1110=1*2^3+1*2^2+1*2^1+0*2^0+  1*2^-1+1*2^-2+1*2^-1+0*2^-4。

    为了更好的存储小数,很多编程语言才采取了浮点数的形式表示,根据要求精度不一样,浮点数包含单精度和多精度两种。浮点数一般包含四部分,依次为:符号位、尾数位、基数位以及指数,单精度和多精度的不同在与用于表示指数和尾数的位数不同,PS,根据标准,小数基数为默认为1,因此,我们可操作的就是符号位、尾数位以及指数,对单精度来说,各位长度为1 8 23,双精度依次为1 11 52。

   浮点数在计算机内部的表示方法采取符号位用0/1表示,尾数部分采取将小数点前面的值固定为1,指数部分采取EXCESS系统表现,好高级的样子大笑,其实没那么夸张的,就是披了层皮而已安静

    小数0.75单精度如何表示呢?0-0111 1110-1000 0000 0000 0000 0000 000解析:第一个0表示的是符号位,这里表示正;0111 1110表示的是指数位,算一下,应该是126,因此指数内容为2的(126-127)次幂(这里用八位来表示指数,取表达中位数为,2的8次幂除2为127),这就是传说的EXCESS系统表现,也就是2的-1次幂,为0.5;1000 0000 0000 0000 0000 000为尾数位,因为采取将小数点前面的值固定为1,因此,在个1,尾数部分为1.1000 0000 0000 0000 0000 000,算一下,为1.5,传说中的小数点前面的值固定为1就是这个意思;综合一下1.5*2的-1次幂,确实等于0.75大笑

   对于有些小数比如0.1,用计算机是无法准确表示出来的,只能是一个精度比较高的近似值(类似1/3无法取到精确值一样,无法除尽),因此对于要求比较高的系统,如银行系统,据说会采取一种先倍乘法,后求除的方法来计算。

  另外,二进制用十六进制表示,简单的用四位二进制表示为一位十六进制数就好啦


原创粉丝点击