浮点数的十进制和二进制转换(详细例子解答)

需要用到浮点数的转换,以前学过又忘记了,就写篇文章巩固一下

最常用的浮点数二进制计算标准:IEEE二进制浮点数算术标准,也就是所谓的IEEE754,所以就介绍一下这个标准。

float类型

float占4个字节也就是32位,那么这32位的组成部分如下所示:
在这里插入图片描述
(1) 符号位,这个就不多解释了,原数>0为0,原数<0为1,和整数的二进制表示方法一样。
(2) 指数位,这边的指数位指的就是2的多少次方,比如说2^3,那么我们就需要把这个3提取出来即可,这个3不能直接作为指数为的值,还需要处理。
(3) 有效数字位,这个也就是我们需要表示的浮点数的主体了。

OK,介绍完上面的部分,然后介绍转换过程:

  1. 十进制到二进制的表达

步骤:
(1) 十转二(把整数部分和小数部分一起转成二进制,记住小数点别掉了哦);
(2) 移位成标准科学计数法表示(科学计数法表示为a×10^b这种形式,其中一般有有 1 ≤ a <10 这样来表示);
(3) 取指数+127(作为指数位的8位数字,这就是为什么float表示的指数为-2^128 ~ +2^128,指数位只能到这么大嘛);
(4) 取有效数去掉小数点前数字作为有效数字位(上面提到有效数字位为23位,如果有效数字位不够23位,在后边补0,超过23位那么就只截取前边23位,这就是所谓的误差产生的地方,即精度范围);
(5) 整合

栗子1:把一个浮点数1.15625转换成二进制表示,过程如下所示
在这里插入图片描述
其中小数怎么转换成二进制这个百度上教程很多,基本和整数一样,就是权重改成-1、-2、-3……
最后得到的结果如上所示,打开下面这个网址浮点数转换,转换结果如下所示:
在这里插入图片描述
在这里插入图片描述
可见,和计算得到的结果一致。

栗子2:把一个浮点数20.25转换成二进制表示,过程如下所示
在这里插入图片描述

在这里插入图片描述
结果也是正确的。

栗子3:把一个浮点数0.266转换成二进制表示,过程如下所示

在这里插入图片描述
在这里插入图片描述
结果也是对的。
可见float类型的IEE754的表达方式就是上面这样子的转换了。

  1. 二进制到十进制的表达
    这个二进制到十进制的转换就十分方便了,过程就是把上述过程给反过来即可。就举一个例子,将0 01111110 10100000000000000000000转换成十进制浮点数,解答如下:
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
可见解答正确。

double类型

double占8个字节也就是64位,那么这64位的组成部分如下所示:
在这里插入图片描述
其实double(双精度)本质上也就是在单精度的基础上扩充了位数,所以呢就不进行详细的例子介绍了,需要注意的是,对于double,需要截取的位数或者补零补到的位数应该为52位,除此之外计算指数的时候所加的数也不再是float的127,而应该是1023,精度和大小都有了质的飞跃,但代价是占用空间增大为64位。

  • 24
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值