c++将十进制转换为二进制 小数_二进制的转换

fea74535014920da0ba72e2a5bbcb519.png

二进制是在计算机中常用的一种进制数,其数据用0和1两个数码来表示数据。我们人类常用的是十进制,那么二进制和十进制之间是有一个转换方法的。

二进制转换十进制

一个二进制数转换为十进制数,是比较简单的,其方法就是用每一个位置上的数字乘以该位置的权重,然后相加得到。举个例子,二进制的1010转换为十进制的话,从其最后面一位0开始,一直往前,其权重依次为2º、2¹、2²、2³,所以这个数转换为十进制就是0×2º+1×2¹+0×2²+1×2³=9.如果出现小数怎么办?方法一样,小数部分的每一位也有其权重,小数点后第一位权重为2的负一次方,2的负二次方以此类推例如:二进制的1.01转换为十进制就是1.25。

十进制转换为二进制

十进制转换为二进制是稍微有点复杂的过程,需要分为整数和小数两部分。整数部分用“除以二取余”的方法。具体说就是用短除法的形式让十进制的数除以二,将其每次的余数依次写下来,就是二进制的数,如十进制的26变为二进制的话,如图。

73ea6e5df7bbc9d9421b0af24f1e1ebb.png

所以十进制的26变为二进制就是11010。对于小数部分,采用的是“乘以二取整”的方法。具体来说就是把小数部分拿出来,乘以2,得到的数把整数部分留下,小数部分继续乘2,得到的数继续进行这样的运算,直到小数部分为0或者取到足够的位数.然后将每次计算的整数部分依次写下来就是二进制下的该数字。计算如图。

30b811798a83fe75a5ff83ee1185f300.png

当然,也会出现循环的情况,比如十进制下的0.2转换二进制时就会出现0011循环的情况,这个时候就是十进制的0.2转换为二进制的话就是(0.001100110011......).

所以在十进制下的26.625就是二进制下的11010.101。

二进制八进制,十六进制

其实除了二进制,十进制之外,我们还会见到八进制,十六进制,它们与二进制的关系非常密切。我们能够看到8是2的三次方,16是2的四次方,所以一个八进制为相当于3个二进制位;一个16进制位相当于4个二进制位。

举个例子,当我们将八进制下的26转换为二进制时,我们可以把2和6两个数字拆开来看,6相当于二进制的110, 2相当于二进制下的010,所以八进制下的26相当于二进制下的010110,最高位0可以省去,就是10110.这样我们就把八进制的一个数转换为二进制。

二进制转换为八进制也简单,就是三个二进制位是一个八进制为。举个例子,二进制下的11001转换时,可以这样看011 001,这样就可以分别计算011相当于0×2²+1×2¹+1×2º=3,001相当于1,。所以转换为八进制就是31。这里需要注意的一点是计算加法时要做到满8进1,因为八进制下不可能出现比8大的数字。

十六进制的转换类似,不过是一个十六进制位相当于4个二进制位。十六进制中就有了ABCDEF表示10 11 12 13 14 15。

这就是关于二进制的各种转换问题,当然,这里讨论的都是正数,负数问题需要跟进一步讨论。因为对于负数在二进制里有相应的表示方法,这里就不过多赘述了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值