最先想到最簡單或則必須要掌握的就是2進制。這是為什么呢?作為一個優秀的嵌入式行業的程序員,如果對于bit操作或則二進制不是很了解的,那你肯定不是一個好的程序員。
二進制
首先幫大家解答一下,為什么單片機一定要學習二進制,因為單片機和二進制有許多類似的地方,比如二進制的每一個位上只有兩種狀態,而單片機內部所有電路信息都只有兩種狀態,要么通,要么斷。那么人們就會很簡單把 1-設定成通。0-設定成斷。
直接上圖:
如上圖:一個 10 (10進制)被轉化為 00001010 (二進制)。這個過程有很多講解(什么?你什么都不會,莫慌。你只要知道0-15對應的4bit編碼就可以應付全部 51單片機 的全部情況了)。
好了,那么我們知道二進制主要用途在哪里呢?其實用的最多的就是二進制的:左移 + 右移。
-
左移:先將一個數變成二進制的模樣,這樣,我們還以 00000001 為例,來說明一下左移,我們現在將 00000001 往左移動一個位置,大家想象一下,大概是什么樣子?不就是 000000010 ,你看 1 的位置是不是向左邊動了一個位置?
如上圖,只有能待在陡峭懸崖上的數字,才能被我們看到,一旦超過了懸崖的旁變,數字就會掉下去,這樣,我們就再也不能看到了。比如左移的動態效果如下:
右移和左移的效果差不多,只不過在負數的情況下稍稍有些問題,不過不需要擔心。你先把這個記住了,等到掌握之后再去擴展一下,這樣就會慢慢進步了。
好了,學會了左移,右移有什么作用呢?引導一下:如果你把 8 個位置上都放上一個小燈(這 8 個燈都是一個性質:1-亮,0-滅)。你想想一下,1每次都往左邊移動一個位置,那么像不像下面的動畫效果?
恭喜你,你已經成功知道了我們進入單片機中最神奇的算法:流水燈了