浮点数用二进制表示方法

IEEE 754 浮点数计数标准

计算机中浮点数表示位如下形式(形式上与科学计数法 有些类似)其中M表示尾数,E表示阶码

完整的浮点数表示还包含符号位S,直观上说:

  • 符号(S):1位二进制位,0表示正数,1表示负数
  • 阶码部分(E):根据不同的精度E的位数不同(参照下图float与double的区别),表示小数点向右移动的位数。E>0 表示向右移动,E<0表示向左移动。
  • 尾数部分(M):根据不同的精度M的位数不同参照下图float与double的区别),是浮点数的二进制表示。需要注意的是这里尾数部分为1.M....
    ,所以遇到类似0.125这样的小数,其二进制表示为0.1001111...
    ,这时就需要将小数点右移1位才符合要求
float类型
double类型

浮点数的二进制表示

10进制浮点数转换为二进制表示很简单,分2个部分讨论

  • 整数部分:采用除2取余法计算(直到被除数为0)
  • 小数部分:采用乘2取整法计算(直到小数部分为0,对于无限小数采取截断方式)

最后用整数二进制表示.小数二进制表示就可以得到完整的浮点数二进制表示了。

下面结合两个例子(精度为float)说明一下:

0.875转换二进制

转换出的二进制表示为:0.111,按照前文将其转换为IEEE 756标准格式:

6.36转换二进制

注意点:

  • 整数部分转换时的结果是倒序的(计算出的顺序011,结果110)
  • 小数部分转换时的结果是正序的

由于0.36表示为二进制是无限不循环的,所以在达到最大位数时直接截断。

按照前文将二进制表示换为IEEE 756标准格式:

25.125转化成二进制

    • 整数部分:25(D) = 11001(B)
    • 小数部分:0.125(D) = 0.001(B)
    • 用二进制科学计数法表示:25.125(D) = 11001.001(B) = 1.1001001 * 2^4(B)

所以 S = 0,尾数 M = 1.001001(取其 1001001),指数 E = 4 + 127(中间数) = 131(D) = 10000011(B)。填充到 32 bit 中,如下:

 

参考:

https://zhuanlan.zhihu.com/p/503336736?utm_id=0

https://blog.csdn.net/jiaoyangwm/article/details/129296459

 

版权声明:
作者:小何
链接:https://ligo100.cn/houduanjishu/611.html
来源:小何博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录