同學們好。在上一節課,我們安排了一個課後練習,要求同學們繪製求兩數和算法的流程圖。求兩數和算法的步驟如下:
(1)獲取用戶輸入的兩個加數,分別存儲到num1和num2兩個變量;
(2)求num1和num2兩數的和,將和存儲到sum變量;
(3)將sum變量輸出到電腦屏幕。
下面我們來繪製這個流程圖,步驟如下:
(1)流程圖的開始使用用開始符號,我們手繪或使用繪圖工具繪製一個圓角矩形,並在圓角矩形內寫入文字「開始。
(2)在開始符號的正下方繪製一個平行四邊形,平行四邊形是流程圖的輸入/輸出符號,並在符號內寫入文字「輸入num1和num2」,然後繪製一條從開始符號指向輸入/輸出符號的流程線,流程線的箭頭指向輸入/輸出符號。
(3)這一步是求兩數的和,在輸入/輸出符號正下方繪製一個矩形,矩形是流程圖的計算過程符號,並在計算過程符號內寫入「sum=num1+num2」,然後從輸入/輸出符號繪製流程線到計算過程符號。
(4)計算過程符號後面是輸入/輸出符號,表示輸出num到電腦屏幕,在計算過程符號正下方繪製輸入/輸出符號,並在輸入/輸出符號內寫入文字「輸出sum」,然後從計算過程符號繪製流程線到輸入/輸出符號。
(5) 最後,繪製流程圖的結束符號。
好,我們來開始學習新的內容。這節課我們主要學習二進位數。為什麼要學習二進位數呢?因為二進位數只有兩個數字0和1,因此二進位數非常適合描述電路的通與短、開關的打開與關閉。例如,我們可以用二進位數0和1來表示燈泡的亮與不亮,用二進位數0來表示燈泡不亮,用二進位數1來表示燈泡亮,這樣我們就可以用多個二進位數來表示燈泡的亮與不亮了。如01011表示有三個燈泡亮,兩個燈泡不亮。
計算機的電路都是由電子元器件組成的,電子元器件的狀態分為通電和不通電。通電的電子元器件會有電壓,稱為高電位,用二進位數1來表示,不通電的電子元器件沒有電壓,稱為低電位,用二進位數0來表示,這樣一組電子元器件的狀態就可以用一組二進位數來表示,這些表示電子元器件狀態的二進位可以進行最簡單的加減運算(再複雜的運算最終都會分解為加減運算),運算後的結果再通過控制電路改變電子元器件的狀態。因此計算機內部運算都採用二進位運算,能夠識別的數也是二進位數。
那麼,二進位數是怎麼運算的呢?二進位數和十進位數有什麼關係,畢竟我們生活中用的都是十進位數。
我們先來做一個小遊戲。伸出我們的右手,從小指開始,依次到大拇指分別代表數字1、2、4、8、16。並且每個手指分為兩種狀態,手指伸直為1狀態,手指彎曲為0狀態。然後分別做每個手指自由伸直或彎曲動作,記錄其狀態和每個手指的數字之和,狀態順序從大拇指開始:
(1)動作:伸直小指、中指和大拇指,彎曲無名指和食指。
狀態:10101
數字之和:21
(2)動作:伸直小指、無名指和中指,彎曲大拇指和食指。
狀態:00111
數字之和:7
(3)動作:伸直全部手指。
狀態:11111
數字之和:31
有同學可能會問,做這個遊戲的意義在什麼地方呢?這個遊戲用直觀化的方式演示了二進位數到十進位數的轉換,五個手指的伸直和彎曲的狀態組合用0和1表述出來,這就是我們本課程要學習的二進位數,遊戲中記錄的數字之和就是二進位數的十進位表示。
前面的遊戲可以把5個二進位數轉換為十進位數,同樣的道理,也可以把30以內的十進位數轉換為二進位數。只需要把十進位數分解成16、8、4、2、1任意數字之和就可以,然後將對應數字的右手手指伸直,沒有對應數字的右手手指彎曲,從大拇指開始記錄其組合狀態,該組合狀態就是要轉換的二進位數。
例如:
十進位數字:5=4+1 對應的二進位數為:00101
十進位數字:28=16+8+4 對應的二進位數為:11100
這個遊戲能不能實現更多二進位數的轉換呢?當然可以,右手五個手指表示5個二進位數,如果再加上左手就可以表示10個二進位數了,所能表示的十進位數也更大。依次類推,多人合作可以表示更多位的二進位數和更大的十進位數。
可以藉助十進位數來理解二進位數。在十進位中,最開始學習的是十以內的加法,之後是兩位數的加法,在兩位數加法的學習中,就需要逢十進一了,按進位的原則進行記數的方法叫做進位記數制,也稱為「數制」或「進位」。
我們平時用的最多的就是十進位,時間是六十進位,也就是說逢六十進一,例如60秒進1分,60分進1小時。因此每一種數制的進位都遵循一個規則,那就是——逢n進1。這裡的n叫做基數。
二進位數因為只有0和1兩個數字,用數學語言來說就是基數為2。依次類推,基數為3的是三進位計數、……、基數為10的就是十進位計數,十進位計數有10個數字,分別是0、1、2、3、4、5、6、7、8、9。
認識了二進位計數,接下來再說說位權。可以藉助於十進位計數來理解位權,在十進位計數中,計數單位分別為個位、十位、百位、千位、萬位、十萬位……,其中個位數表示數值1、十位數表示數值10、百位數表示數值100、千位數表示數值1000、……,每個位數表示的數值叫位權。位權通過計算基數的n-1次乘方就可以得到,這裡的n是指位數所在數字中的位置。例如,對十進位數1260來說,個位數是1260的第一個數字,因此n為1;十位數是第二個數字,因此n為2;百位數是第三個數字,因此n為3;千位數是第四個數字,因此n為4。由此,個位數的位權為10的1-1次乘方是1,十位數的位權為10的2-1次乘方是10、百位數的位權為10的3-1次乘方是100、千位數的位權為10的4-1次乘方是1000。
關於乘方運算
乘方運算是指一個數連續自乘n次,可以稱為該數的n次乘方。例如:3個5連續自乘,可以稱為3的5次乘方。除0外,任何數的0次乘方都為1。
理解了十進位的位權,再來理解二進位的位權就很容易了。例如,二進位數00111從低位到高位的位權依次是2的0次乘方,結果是1、2的1次乘方,結果是2、2的2次乘方,結果是4、2的3次乘方,結果是8、2的4次乘方,結果是16,這也是前面從小指開始到拇指指定的位權。
理解了二進位計數的基數和位權,就可以進行數制轉換了。00111如何轉換成十進位計數呢?轉換很簡單,將二進位數從高位到低位每個數字乘以相應的位權然後求和就可以了。
00111(二進位)= 0 * 16 + 0 * 8 + 1 * 4 + 1 * 2 + 1 * 1 = 7(十進位)。
課程小結
二進位數只有數字0和1,二進位數的這個特點正好用於表示電子元器件的狀態,電子元件器有通電(高電位)和斷電(低電位)兩種狀態。因此使用二進數可以表示電子元器件的狀態。而計算機是由成千上萬個電子元器件構成的,所以計算機內部運算都採用二進位運算,能夠識別的數也是二進位數。
課後小練習
將下列二進位數轉換為十進位數:
(1)1011
(2)0001
(3)10101