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


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

本文写于 2020 年 9 月 12 日

很多人觉得二进制很奇妙,很难转换,但其实没那么夸张。

首先看一个简单的十进制数: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。

(完)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM