最先想到最简单或则必须要掌握的就是2进制。这是为什么呢?作为一个优秀的嵌入式行业的程序员,如果对于bit操作或则二进制不是很了解的,那你肯定不是一个好的程序员。
二进制
首先帮大家解答一下,为什么单片机一定要学习二进制,因为单片机和二进制有许多类似的地方,比如二进制的每一个位上只有两种状态,而单片机内部所有电路信息都只有两种状态,要么通,要么断。那么人们就会很简单把 1-设定成通。0-设定成断。
直接上图:
如上图:一个 10 (10进制)被转化为 00001010 (二进制)。这个过程有很多讲解(什么?你什么都不会,莫慌。你只要知道0-15对应的4bit编码就可以应付全部 51单片机 的全部情况了)。
好了,那么我们知道二进制主要用途在哪里呢?其实用的最多的就是二进制的:左移 + 右移。
-
左移:先将一个数变成二进制的模样,这样,我们还以 00000001 为例,来说明一下左移,我们现在将 00000001 往左移动一个位置,大家想象一下,大概是什么样子?不就是 000000010 ,你看 1 的位置是不是向左边动了一个位置?
如上图,只有能待在陡峭悬崖上的数字,才能被我们看到,一旦超过了悬崖的旁变,数字就会掉下去,这样,我们就再也不能看到了。比如左移的动态效果如下:
右移和左移的效果差不多,只不过在负数的情况下稍稍有些问题,不过不需要担心。你先把这个记住了,等到掌握之后再去扩展一下,这样就会慢慢进步了。
好了,学会了左移,右移有什么作用呢?引导一下:如果你把 8 个位置上都放上一个小灯(这 8 个灯都是一个性质:1-亮,0-灭)。你想想一下,1每次都往左边移动一个位置,那么像不像下面的动画效果?
恭喜你,你已经成功知道了我们进入单片机中最神奇的算法:流水灯了