浮点数怎么用二进制表示

浮点数怎么用二进制表示

对于浮点数在计算机中是怎么用二进制表示的,这个知识点让我学了很久,很多资料讲的特别抽象难懂,所以今天我想用自己的方式讲一讲。
学过 《计算机组成原理》 或者类似 《计算机系统》 这些课程的小伙伴们应该都知道,浮点数在计算机中的存储方式遵循IEEE 754 浮点数计数标准,可以表示为:
在这里插入图片描述
图片采用尾数 + 阶码的编码方式,更通俗一点说,就是类似于数学课本上所学的科学计数法表示方式:有效数字 + 指数位!
因此,只要给出:符号(S)、阶码部分(E)、尾数部分(M) 这三个维度的信息,一个浮点数的表示就完全确定下来了,所以float和double这两种类型的浮点数在计算机中的存储结构
在这里插入图片描述
在这里插入图片描述
1.符号部分(S)
0-正 1-负

2、阶码部分(E)(指数部分):

  • 对于float型浮点数,指数部分8位,考虑可正可负,因此可以表示的指数范围为-127 ~ 128
  • 对于double型浮点数,指数部分11位,考虑可正可负,因此可以表示的指数范围为-1023 ~ 1024

3、尾数部分(M):
浮点数的精度就是由尾数部分决定的

  • 对于float型浮点数,尾数部分23位,换算成十进制就是 2^23=8388608,所以十进制精度只有6 ~ 7位;
  • 对于double型浮点数,尾数部分52位,换算成十进制就是 2^52 = 4503599627370496,所以十进制精度只有15 ~ 16位

所以,浮点数交给计算机存储的时候,可能会有精度丢失问题!!!因此使用时需要格外小心,如果真因为这一块出了bug,定位问题还是非常艰难的,所以预防工作要做好。

我们先来举个例子详细说明一下浮点数怎么转换成二进制数
比如:把十进制小数0.875转换成二进制,具体怎么操作?
可以分几大步走:
第一:以小数为界限划分成整数部分和小数部分
第二:我们开始来整数部分的转换,这里的整数是为十进制数,转换成二进制数的方式是除以二取余数,这里的整数部分为零,那转换成二进制数也为零。
第三:小数部分的转换,小数部分的转换的方式是乘二取整数,如下图
在这里插入图片描述
第四:将结果合并,就可以得到这个结果为0.111

所以该结果按照上一节所述的尾数 + 阶码的计算机计数方式,则可以表示为:
在这里插入图片描述
符号位:0
阶码(E)部分:若以float为例,应为 127 +(-1)= 126,因此二进制表示为:01111110
***尾数部分(M)***:若以float为例,应为23位,因此尾部补齐后为11000000000000000000000。因此最终的总结果为(以32位精度float表示):00111111011000000000000000000000

  • 11
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值