我对二进制的理解

我对二进制的理解

理解进制的重要方法是类比我们熟知的十进制

10进制

一个正常的人类,拥有10根手指,每根手指代表1个信息,那么两双手掌便可表达10个信息。1, 2, 3, ..., 10。

所以人类当初用 逢10进1,也就是10进制。

什么是逢10进1?即每超过9进一位, 9, 10, 99, 100, 999, 1000, ...

那么理解二进制难吗?其实觉得难只是不习惯罢了。

2进制

进位

通过上述解释,我们可以明白2进制就是 逢2进1

即0, 1, 10, 11, 100

那么我们来类比一下(两边在数值上并不相等,只是比较他们的进位方式)。

0 -> 1 相当于 0 -> 1

1 -> 10 相当于 9 -> 10

11 -> 100 相当于 99 -> 100

这仔细想想不难理解吧,我相信难的是怎么能一眼看出二进制数所表示的十进制数

转换到10进制

如果你刚刚接触2进制,给你一个二进制数让你转十进制,而且不能用纸笔。想必你应该会这么干。

如(1010)2

此时你的心中,1是1,10是2,11是3,100是4,101是5,1010是10。

过了一段时间,经过一遍遍迭代,你迭代出来了。但如果此时给你一个长一点复杂点的2进制呢?

如(1101011)2

现在给你纸笔,你肯定会用一个公式。从右往左,\(a_0\)代表最右边第一位数,\(n\)指最左边最后一位数的下标。(这里即6)

\(a_0*2^0 + a_1*2^1 + a_2*2^2 + ... + a_n*2^n\)

当老实的你写完这个式子的时候,已经过去30秒了,当然最后还是算出了答案。

那如果此时,我要求你在15秒内答出呢?那么可以用下面这个方法。

1 1 0 1 0 1 1
64 32 16 8 4 2 1

当前位如果为1时,则加上下面的数字,否则不加。

\(64 + 32 + 8 + 2 + 1 = 107\)

对这就是对上面那个公式的简化版本,相信聪明的你一定懂了。

那么这个方法和那个公式是什么原理呢,从而避免了迭代造成过多的时间开销?

这时候我们用上述方法来描述十进制

比如: 114 (恼)

\(1*10^2+1*10^1+1*10^0=100 + 10 + 4 = 114\)

二进制其实也是同理,只不过他的进制为2罢了

比如: 01101

\(0*2^4+1*2^3+1*2^2+0*2^1+1*2^0=0+8+4+1=13\)

其它进制也是同理,主要你要熟悉到底什么是进制,就是逢N进1,但具体怎么领悟就是时间与思考的问题了。

10进制转换2进制

如果我还有业余时间的话会去谈谈我对“短除法”转2进制的理解。

同理,也可以通过类比的方法也能理解。

记住二进制短除法中的数其实就是二进制在十进制下的投影

第一次写这种内容,小学生写的,如果把你搞混了,实在抱歉:-(

当然如果有用,那就十分感谢啦~

posted @ 2022-05-04 01:18  littleblackLB  阅读(523)  评论(0编辑  收藏  举报