進制這事兒,說到底就是位值原理,即:
同一個數字,放在不同的數位上,代表不同大小的數。
例如:十進制中,百位上的1表示100,十位上的1表示10.
十進制之中,每個數都可以被拆開:
123=1×100+2×10+3×1
9876=9×1000+8×100+7×10+6×1
這個事情先搞清爽,然后我們就可以為拓展進制做准備了:
試回答這個問題:為啥相應的數位是1000、100、10、1?為啥不是4、3、2、1?
答:滿十進一,再滿十再進一,因此要想進到第三位,得有10×10;第4位得有10×10×10
這樣我們就知道了,對10進制,從低位到高位,依次要乘以10^0(10的0次方,下同),10^1,10^2,10^3……
下面我們開始換進制玩兒:
把十 進制換成 二 進制
也就是把10換成2
那么我們得到:
對2進制,從低位到高位,依次要乘以2^0,2^1,2^2,2^3……
也就是1、2、4、8、……
因此原來十進制咱們叫 十位、百位、千位……
現在二進制其實是 二位、四位、八位……
這樣我們就能做十進制換二進制了:
比如:二進制數1011=1×2^3+0×2^2+1×2^1+1×2^0=1×8+0×4+1×2+1×1=8+2+1=11
(由於二進制中非零的數只有1,所以其實等同於:
個位有數就加1,二位有數就加2,四位有數就加4……)
接下來我們進行十進制往二進制的轉換:
比較小的數,直接通過拆分就可以轉換回去
比如13,我們數一數,1、2、4、8、16……,唔,不能包含16了,那就只能包含8。 13-8=5,5當中有4,5-4=1
好啦,我們知道13=8+4+1
接着把她對應回相應位置去,8是從低往高數的第4位,4是從低往高數的第3位,1是從低往高數的第1位
於是13=二進制數1101
然后就多練習這個,反復練,讓自己熟悉這個感覺:
17=16+1=二進制10001
19=16+2+1=二進制10011
30=16+8+4+2=二進制11110
……
比較熟悉之后就可以看看高級的短除法化二進制了(不要偷懶哦!先去把前面的練熟!):
粗鄙地來做的話,現在你按照書上說的短除法來試試,會發現它和你湊數得到的結果剛好是一樣的,好神奇~
以后就按這個做吧!
(1)一個二進制數末尾是1,意味着一定是……+1,前面的每個數都是2的倍數,只有最后的+1不是
所以一個二進制數末尾是1,意味着它對應的十進制數除以2一定是余1的。
所以第一次除以2之后的余數,就是轉換結果中的最后一位。
(2)如果一個二進制數從低往高第2位是1,我們希望把它轉換為(1)的情況,那么我們把這個二進制數的末尾抹掉。
抹掉尾巴的二進制數,和原來的二進制數相比,每個數都往低位錯了1位,相當於除以2.
末尾的尾巴丟掉了,相當於我們把余數丟掉了。
而這個除以2的步驟,剛好是(1)當中判斷末尾是不是1的步驟,所以我們剛好可以繼續做下去。
對這個抹掉了尾巴的二進制數(十進制來說就是原數除以二之后的商),我們繼續(1)的做法,把它除以2,看余數。
……
如此繼續下去,就可以得到短除法的結論了。
