超模君8歲的表妹現在讀一年級
有一天數學老師隨堂聽寫
機智的表妹靈光一閃
粉筆一揮在黑板上筆走龍蛇
粉筆一揮在黑板上筆走龍蛇
老師說表妹算錯了
表妹很不服氣
和數學老師吵了起來
結果被老師扔出了教室
氣呼呼地來找了超模君
十進位計數法
十進位就是我們平時,最常使用的計數法,簡單來說,十進位有以下兩個特點:
使用的數字有 0、1、2、3、4、5、6、7、8、9 共 10 種。數位有一定的意義,從右往左分別表示個位、十位、百位、千位……
以上規則在小學數學中就學到過,日常生活中也一直在用,是眾所周知的常識,在此權當複習。
接下來我們以2503這個數為例,通過實例剖析一下十進位計數法。
把2503拆分,是2個1000、5個100、0個10和3個1累加的結果。
其中,1000是10×10×10,即103,100是10×10,即102……因此,我們可以把2503寫成以下形式:
千位、百位、十位、個位,分別可以稱作這個數字的103的位、102的位、101的位、100的位。
十進位計數法的數位全都是10n的形式。這個10便可以被稱為十進位計數法的基數或底。
二進位計數法
講完十進位,再來說說計算機中普遍使用的二進位。在十進位計數法的基礎上類推,很快就可以掌握二進位的規則。
二進位使用的數字只有0、1兩種。從右往左分別表示1位、2位、4位、8位……
用二進位計數法來數數,首先是0,然後是1,接下去……不是2,而是在1上面進位變成10,繼而是11,100,101……
在此,我們以二進位數的1100為例來探其究竟。
把二進位的1100拆分,是1個8、1個4、0個2和0個1累加的結果。
這裡出現的 8、4、2、1,分別表示 23、22、21、20。因此,我們可以把二進位下的1100寫成以下形式:
如此計算,就能將二進位計數法的1100,轉換為十進位計數法規則下的數字:1*8+1*4+0*2+0*1=12
如此類推,7+8=15=1111,表妹還真的沒算錯!
基數轉換
既然二進位的數字可以轉化為十進位,那麼,十進位要怎麼轉化為二進位呢?
其實很簡單:除就行了!
其實很簡單:除就行了!
我們試將十進位下的2503轉換為二進位計數法,如下圖所示,我們需要將2503反覆地除以2,並觀察餘數為「1」還是「0」。
隨後再將每步所得的餘數的列(1和0的列)逆向排列,由此就可以得到二進位的表示啦!
100111000111!!
在十進位中,基數為10,各個數位是以10n的形式表現的。而二進位中,基數為2,各個數位以2n的形式表現。
十進位計數法和二進位計數法間的基數轉換,便是計算機運行過程中的日常工作。
可能有模友好奇了,計算機為啥偏偏要採用二進位呢?
可能有朋友好奇了,計算機為啥偏偏要採用二進位呢?
因為,計算機在表示數的時候,通常會使用以下兩種狀態。
開關切斷狀態 … 0開關連通狀態 … 1
開關可以用0或1來表示,如果有許多開關,就可以表示為許多個0或1。這樣以來,只要增加開關的個數,不管是多大的數字都能表示出來。
當然,做成能夠表示0-9這10種狀態的開關,進而讓計算機採用十進位計數法,這在理論上是可能的。
當然,做成能夠表示0-9這10種狀態的開關,進而讓計算機採用十進位計數法,這在理論上是可能的。
但是,與0和1的開關相比,必定有著更為複雜的結構。
比如,當我們比較十進位和二進位下的加法表會發現,二進位下的運算套路比十進位要簡單得多。
可是比起十進位,二進位的位數會增加許多,這是它的缺點。
例如,在十進位中2503隻有4位,而在二進位中要表達同樣的數則是100111000111共12位數字。
人們覺得十進位比二進位更容易處理,是因為十進位計數法的位數少,寫作方便,計算起來不容易發生錯誤。
人們覺得十進位比二進位更容易處理,是因為十進位計數法的位數少,寫作方便,計算起來不容易發生錯誤。
但是計算機的計算速度非常快,位數再多也沒有關係。而且計算機不會像人類那樣發生計算錯誤,不需要靠直覺把握數字的大小。
對於計算機來說,只要處理的數字種類少、計算規則簡單,就最好不過了。
舉一反三
除了以上說到的十進位和二進位,程式設計師大哥們還常常使用到八進位和十六進位的計數法。
有了十進位和二進位做鋪墊,我們可以按圖索驥,得出八進位計數法的特徵如下:
使用的數字有 0、1、2、3、4、5、6、7 共 8 種。從右往左分別為80的位、81的位、82的位、83的位……(基數是 8)
十六進位計數法的特徵如下:
使用的數字有 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共 16種。從右往左分別為 160 的位、161 的位、162 的位、163 的位……(基數是 16)在 16 進位計數法中,使用 A、B、C、D、E、F(有時也使用小寫字母 a、b、c、d、e、f)來表示 10 以上的數字。
舉一反三,N進位計數法的特徵如下:
舉一反三,N進位計數法的特徵如下:
使用的數字有 0,1,2,3,…,N-1,共 N 種。從右往左分別為 N0的位、N1的位、N2的位、N3的位……(基數是 N)
所以,當老師聽寫「7+8」的時候,不僅可以像表妹一樣,寫成二進位的「1111」,還可以寫成——
17(八進位)
F(十六進位)
……
大言不慚、義憤填膺的超模君,拉著表妹去找數學老師理論。
大言不慚、義憤填膺的超模君,拉著表妹去找數學老師理論。
結果,老師把超模君和表妹一起,從教室裡扔出去了……