简单讲讲二进制与十进制的转换

二进制与十进制的转换

很多人觉得二进制很奇妙,很难转换,但其实没那么夸张。本文将简单为您阐述二进制的简单解释,并介绍十进制转换二进制的转换公式。

关于二进制的简单解释

首先看一个简单的十进制数:123

对于 123 而言,是 100 + 20 + 3 的结果,也就是 1*100 + 2*10 + 3*1

再进一步拆分成 10^n(十的 n 次方)后就可以表示为 1*10^2 + 2*10^1 + 3*10^0

OK,我们先列个表看看:

10^2 10^1 10^0
2^2 2^1 2^0
3^2 3^1 3^0
8^2 8^1 8^0

在这里我们将十进制的规则替换到了 2、3、8 进制上。

这个表有啥用呢?

我们来看几个简单的例子,十进制的 2,在二进制中是就是 10,这点我们非常清楚。

我们将 10 放入表中:

10^1 10^0
0 2
2^1 2^0
1 0

对比一下两表,我们会惊奇的发现一个式子:1*2^1 + 0*2^0

诶?!这不就是 2 吗?

所以我们现在学会了二进制转十进制的方法,就是将二进制的每一位,乘上二的位数减一次方后相加

十进制转二进制相对而言要更麻烦一点,也更难想——我们需要解出一个公式:

十进制数 = a*1 + b*2 + c*4 + d*8 + e*16 + ……

(这里的 a、b、c……都表示的是 0 或 1)

进一步扩展可以得到 m 进制转换 n 进制的算法:

a1 * m^0 + b1 * m^1 + c1 * m^2 + ... = a2 * n^0 + b2 * n^1 + c2 * n^2 + ...

例如 50。可以表示为:0*1 + 1*2 + 0*4 + 0*8 + 1*16 + 1*32,所以 50 的二进制为 110010。

13 呢?可以表示为 1*1 + 0*2 + 1*4 + 1*8,即为 1101。

最后我们来讲讲计算公式。

整数计算公式

首先是整数的。如果我们需要转化一个十进制数 521。那么公式为:除 2 取余,逆序排列余数

  • 521 / 2 = 260 余 1
  • 260 / 2 = 130 余 0
  • 130 / 2 = 65 余 0
  • 65 / 2 = 32 余 1
  • 32 / 2 = 16 余 0
  • 16 / 2 = 8 余 0
  • 8 / 2 = 4 余 0
  • 4 / 2 = 2 余 0
  • 2 / 2 = 1 余 0
  • 1 / 2 = 0 余 1

那么结果就是 1000001001

小数计算公式

小数的计算公式为:乘 2 取整,顺序排列整数

例如十进制小数:0.625。

  • 0.625 * 2 = 1.25 取出整数部分 1
  • 0.25 * 2 = 0.5 取出整数部分 0
  • 0.5 * 2 = 1 取出整数部分 1

因此最终结果为:0.101

通过这个方法我们可以计算一下,发现大量的小数转化成二进制之后是一个无限小数。这就是为什么 0.1 + 0.2 !== 0.3 的根本原因。

最后合并整数的计算公式,我们可以知道,521.625 的二进制为:1000001001.101

(完)

posted @ 2020-09-12 11:48  徐航宇  阅读(1605)  评论(0编辑  收藏  举报