我对二进制的理解
我对二进制的理解
理解进制的重要方法是类比我们熟知的十进制
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进制的理解。
同理,也可以通过类比的方法也能理解。
记住二进制短除法中的数其实就是二进制在十进制下的投影。
第一次写这种内容,小学生写的,如果把你搞混了,实在抱歉:-(
当然如果有用,那就十分感谢啦~