上周末,給孩子輔導奧數的時候,發現居然有一道二進制題,題目是求兩個二進制的和。我的視訊課第一課中就介紹了二進制的特點“逢二進一,借一當二”,給孩子講了下,他還是順利的做了出來。然後,我又給孩子講了下十進制與二進制的轉換。在講十進制與二進制轉換的時候,我是按照咱們以前學的除二取餘法,如下圖所示:

這種算法應該說是教科書的算法,去各大搜尋引擎搜出來的算法都是這個。
我大概比别人多思考了一步,我在想為什麼要除2取餘,經過思考我發現其實質是要找出這個數裡面含有多少個2,例如例圖中的150,它的裡面就含有75個2,而2的二進制為10,也就是說要算出75個(10)₂的和。繼續思考,你會發現,(10)₂+(10)₂=(100)₂=2² , (100)₂+(100)₂=(1000)₂=2³,于是我得出了如下圖所示結果:
從上圖中可以總結出一個規律:那就是2的指數是幾,換算成二級制後面就有幾個0,比如:2⁸=100000000。這個也好了解,我的視訊課程講ASCII碼時,說ASCII碼隻占用了7位存儲,最高位為0,是以最多可以存儲128個字元,存儲範圍從00000000到01111111,也就是10進制的0-127。下圖就是我的最新算法:
大家可以對比一下,看看是否簡化了原先的除2取餘算法。如果你覺得本文還不錯,請幫忙轉發給需要的朋友。