章節試閱
第 1 章 用手指表示位元
1.1 用單手數到31
由梨:「我說哥哥啊!你可以用一隻手數到 31 嗎?」
我:「為什麼突然這麼問呢?」
我是高中生,由梨是我的表妹,還是個國中生。
我們從小就常在一起玩,她總叫我「哥哥」。
今天學校放假,她和平常一樣來我的房間找我,玩玩遊戲、讀讀書之類的……
由梨:「這本書有講到『用一隻手數到 31 的方法』耶。哥哥你會嗎?」
我把視線轉向她現在正在看的書。
我:「啊,妳是說用二進位法來數數字的方法吧。」
由梨:「用二進位法來數數字……哥哥你知道怎麼數嗎?」
我:「會啊,因為我有練習過。」
由梨:「數給我看!」
我:「把拇指彎起來,這就是 1 。」
由梨:「嗯,沒錯。」
由梨看了看我的手,與書中的圖比較後這麼回答。
我:「把拇指張開,再把食指彎下去,這就是 2 了對吧。」
由梨:「沒錯,那 3 呢?」
我:「 3 就是這樣吧?把拇指再彎起來。」
由梨:「沒錯!沒錯!」
我:「 4 的話則是把中指彎起來,其他張開……是說手指有點痛耶!」
我照著順序,將 1 到 31 分別用單手比出來。
由梨:「哥哥好厲害!」
我:「不過感覺手指快抽筋了呢。特別是比出 4 、 8 ,還有 21 的
時候。」
由梨:「沒想到真的可以用單手數到 31 ,很厲害嘛!」
由梨一邊說著,一邊比出 V 字手勢。嗯,這是 25 對吧。
我:「如果用一般的手勢來比數字,就只能比到 10 而已囉。」
由梨:「不過還真虧你可以把這些數字的手勢都背下來耶喵……」
由梨發出貓語表示佩服。
我:「我不是用背的喔。」
由梨:「咦?」我:「我並沒有背下每個數字的手勢喔。只是按照順序陸續加1 上去而已。只要注意進位時不要出錯,由梨也能馬上學會喔。」
由梨:「真的嗎?我也想學!」
我:「由梨應該已經學過二進位法了吧?」
由梨:「有學過嗎?」
我:「我們在討論『猜數字魔術』的時候就有講過二進位法了吧。」
由梨:「啊,對耶。不過我已經忘了。」
我:「這樣啊,那我們就照著順序一步一步說明吧。」
由梨:「嗯!」
於是,我們的「數學雜談」開始了。
1.2 扳手指的方法
我:「一隻手有五根手指對吧。」
由梨:「是啊。嘎喔!」
由梨學起了野獸的樣子,擺出了威嚇我的樣子。
我:「我們可以用這五根手指的彎起或張開來表示一個數。每一根手指都有『舉起』和『放下』這兩種可能狀態。」
由梨:「也就是手指有『張開』和『彎曲』兩種狀態對吧。」
我:「沒錯。舉例來說,小指有舉起和放下兩種狀態。在小指
為不同狀態時,無名指也可能分別是舉起或放下……依此類推。」
小指有舉起和放下兩種狀態。
無名指有舉起和放下兩種狀態。
中指有舉起和放下兩種狀態。
食指有舉起和放下兩種狀態。
拇指有舉起和放下兩種狀態。
由梨:「我知道!所以全部共有 32 種可能!」
我:「沒錯。手指有五根,每根手指都有舉起或放下兩種狀態。
計算 2 的 5 次方,可以知道所有手指的舉起或放下狀態共有 32 種。因為有 32 種,所以可以用來表示 32 個數。」
由梨:「咦?不是 31 是 32 嗎?」
我:「 1, 2, 3, … , 31 ,還有 0 喔。」
由梨:「啊,真的耶,差點忘了 0 。」
我:「接著,將一根手指的舉起與放下分別對應到 0 和 1 。
也就是說,手指舉起 0、手指放下 1
這麼一來,我們就可以用五位數的 0 與 1 來表示五根手指的舉起或放下了。」
由梨:「嗯嗯。 0 和 1 啊……」
我:「譬如說,這就是 11001 對應的手勢。」
由梨:「Peace。」
我:「『五位數的0與1』可以看成是『以二進位法表示的五位數』。所以說,只要用一隻手就可以表示從 0 到 31 的每個數字了。」
由梨:「哥哥等一下。這樣的話,還是要把這些 0 與 1 的排列方式都背下來不是嗎?」
我:「到這裡,我們只有講到手指的舉起及放下對應到 0 與 1而已喔。接下來才要進入有趣的部分。」
由梨:「嘎喔!」
1.3 記數法
我:「說到這個,由梨知道十進位法是什麼嗎?」
由梨:「你問是什麼 不就是一般的數嗎?」
我:「十進位法本身不是數喔,是一種記數法。」
由梨:「記數法?」
我:「表記數字的方法,也就是如何寫出一個數。」
由梨:「表示數字的方法……數字不就是數字嗎?」
我:「不不不,數字的表記方式有很多種喔。」
由梨:「聽起來好麻煩啊……數字就是數字嘛!」
我:「舉例來說,『12』可以寫成國字的『十二』,也可以寫成英語的『twelve』,但這些都表示 12 這個數。雖然表記方式不同,但都表示相同的數。」
由梨:「時鐘也一樣嗎?」
我:「時鐘?」
由梨:「客廳的時鐘啊。12點的地方不是寫著『XII』嗎?」
我:「啊,沒錯!虧妳有注意到。就像由梨說的一樣, XII 也可
以表示12。」
由梨:「呵呵,瞭解……然後呢?」
1.4 十進位法
我:「再來談談十進位法吧。十進位法是我們平常所使用的記數法,也叫做十進位記數法。」
由梨:「十進位記數法?」
我:「十進位法會使用 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 等,共十種數字來表示。」
由梨:「是啊。」
我:「進位記數法中,寫出數字的位置 也就是『位』,是一大重點。」
由梨:「是指個、十、百、千、萬嗎?」
我:「沒錯。從最右邊開始,依序是個位、十位、百位、千位。
每往左邊一個位,數量就變成十倍。以 2065 這個數為例
個位是 5 ,故表示 5 × 1 。
十位是 6 ,故表示 6 × 10 。
百位是 0 ,故表示 0 × 100 。
千位是 2 ,故表示 2 × 1000 。
就是這樣。」
由梨:「啊,哥哥,我想起來了!四位數可以表示成這個形式對吧?」
我:「當千位數的數字是 a 、百位數的數字是 b 、十位數的數字是 c 、個位數的數字是 d 的時候,就可以寫成這樣沒錯。」
由梨:「嗯嗯。」
我:「或者也能說, 2065 這個數字的排列,可以表示由 2 個1000、 0個100、6個10,以及 5個1相加後得到的數。」
由梨:「簡單、簡單。」
我:「到這裡,講到的都是我們熟悉的十進位法。那麼,接下來要講的二進位法,就是把 10 全部換成 2 的記數法囉。」
由梨:「哦哦 !」
1.5 二進位法
我:「二進位法是一種記數法,也是一種表示數的方法。不過,二進位法中所用的數字就只有 0 和 1 兩種而已,二進位法中會用這兩種數字的排列來表示每個數。」
由梨:「嗯嗯。」
我:「從右邊開始,依序稱做 1 位、 2 位、 4 位、 8 位、 16 位。
每往左邊一個位,數量就變成二倍。以 11010 這個數為例
1 位是 0 ,故表示 0 × 1 。
2 位是 1 ,故表示 1 × 2 。
4 位是 0 ,故表示 0 × 4 。
8 位是 1 ,故表示 1 × 8 。
16 位是 1 ,故表示 1 × 16 。
就是這樣。」
由梨:「為什麼二進位法中會出現 16 位、 8 位這種不乾不脆的位呢?」
我:「不乾不脆?」
由梨:「如果是十進位法,位所代表的數字就是 1, 10, 100, 1000,
…這種剛剛好的數不是嗎?」
我:「我們之所以覺得從 1 開始十倍十倍乘上去的數字會『剛剛好』,是因為我們已經習慣了十進位法的表記方式。因為我們用的是十進位法,所以每將一個數乘以十倍時,數的後面就多一個 0 。」
由梨:「啊……」
我:「十進位法中,會用到個位、十位、百位、千位……等
等。這些都可以寫成以下形式。
代表 10 n 的位( n = 0, 1, 2, 3, …)」
由梨:「嗯嗯。」
我:「 10 n 可以對應到十進位法中, 1 後面有 n 個 0 的數,也就是說全都是 10 的乘冪。」
由梨:「乘冪?」
我:「嗯,乘冪有時也會寫成連乘喔。」
由梨:「連乘啊……」
我:「二進位法中,會用到 1 位、 2 位、 4 位、 8 位、 16 位……
等等。這些都可以寫成以下形式。
代表 2 n 的位( n = 0, 1, 2, 3, 4, …)
用二進位法表示 2 n 時,可以寫成 1 後面有 n 個 0 的數。這就是 2 的乘冪形式。」
由梨:「原來如此!如果用二進位法表示 1 位、 2 位、 4 位、 8
位、 16 位,就可以得到剛剛好的數字了對吧!因為
1 位是 1 位
2 位是 10 位
4 位是 100 位
8 位是 1000 位
16 位是 10000 位
對吧!」
我:「正是如此!」
由梨:「嘿嘿 」
我:「啊,對了。看到 10000 這種只由 0 和 1 所組成的數時,我們沒辦法馬上分辨出這是用十進位法表記的數,還是用二進位法表記的數。」
由梨:「啊,說的也是。」
我:「為了顯示出我們用的是哪一種進位法,有時會在數字的右下角寫出底數。如果用十進位法寫 10000 ,會寫成(10000) 10 ;如果用二進位法寫,則會寫成 (10000) 2 。這樣就能分辨清楚了。」
由梨:「這樣啊」
我:「譬如說,我們可以用以下等式來表示『以二進位法表記的11010 這個數,與以十進位法表記的 26 這個數相等』。」
由梨:「這樣不是很麻煩嗎?」
我:「如果不會有搞混底數的問題,不寫出底數也可以喔。畢竟這只是為了弄清楚底數是多少而已。」
由梨:「那就還好。」
我:「因為目的只是要弄清楚底數是多少,所以也有人會寫成這樣。」
由梨:「原來如此。」
我:「前面我們提到,二進位法中的 11010 ,會等於十進位法中的 26 。那麼,該如何確認這件事呢?」
由梨:「計算一下就知道了吧。我看看…………所以會是 26 !」
我:「沒錯!二進位法中只會用到 0 和 1 兩種數字。或者也可以說,『以二進位法表記數字』就是將數『表示成 2 的乘冪之和』。用剛才由梨計算的 26 當例子,可以得到也就是 2 4 、 2 3 、 2 1 的和。」
由梨:「哦 不會用到 2 2 和 2 0 耶。」
我:「如果是 31 ,就可以寫成這個樣子。
也就是 2 4 、 2 3 、 2 2 、 2 1 、 2 0 的和。」
由梨:「嗯嗯,這樣就有用到 2 4 到 2 0 的每個數了。」
1.6 對應表
我:「讓我們試著用十進位法和二進位法分別表示 0, 1, 2, 3, … ,31 吧。」
我:「從這個對應表中可以看出幾個規律。比方說,請妳將二進位法這欄中,每個數的最右邊一位由上到下唸出來。」
由梨:「 0, 1, 0, 1, 0, 1, …是這個嗎?」
我:「沒錯。如果 1 位是 0 就是偶數, 1 位是 1 就是奇數。偶
數和奇數會交替出現,所以會形成 0, 1, 0, 1, …的規律。」
由梨:「若是 2 位,就是 0, 0, 1, 1, 0, 0, 1, 1, …囉。」
我:「也就是 0 和 1 兩個兩個交替出現對吧。」
1.7 在二進位法中逐次加 1
我:「接著來實際數數看一個個數吧。二進位法中,五位數的0 會寫成 00000 。把它加上 1 後會變成 00001 。」
由梨:「因為 0 和 1 相加後會得到 1 。」
我:「再加上 1 就會變成 2 囉。 00010 。」
由梨:「進位了?」
我:「是啊。進位了。 1 加上 1 後會得到 2 ,但是二進位法中只
能使用 0 和 1 ,所以會進位,得到 00010 。」
由梨:「再加上 1 後就會變成 3 了,也就是 00011 。」
我:「再加 1 得到 4 時,會連續發生兩次進位。」
由梨:「就和 99 加上 1 的情況一樣。」
我:「是啊。十進位法中的 99 加 1 時時,也會連續進位兩次。」
由梨:「二進位法中只有 0 和 1 ,計算起來很簡單嘛!」
我:「相對的,二進位法的位數也比較多喔。」
由梨:「這樣啊……」
我:「瞭解這些之後,就知道怎麼用單手數到 31 囉。把彎起來
的手指當作 1 ,然後陸續加上 1 ,並注意進位,就可以比出每個數的手勢了。」
由梨:「我試試看!」
由梨開始將手指彎起又張開,數起了二進位的數字。
我:「拇指是 1 位,所以會一直重覆彎起又張開的動作,很忙對吧。」
由梨:「是啊。小指倒是很閒……」
1.8 39會對應到什麼數呢?
我:「那麼,這裡就來個小測驗吧。」
由梨:「什麼小測驗?」
我:「十進位法中的 39 ,寫成二進位法時會是什麼樣子呢?」
小測驗
試將 39 改寫成二進位的數字。
由梨:「沒學過。」
我:「不不不,不是問妳有沒有學過,而是要妳思考要怎麼解題喔。」
由梨:「……啊,我知道了。剛才我們有列出 31 以前的對應表嘛,再把它接著寫下去就行了吧。 31 是 11111 、 32 是100000 、 33 是 100001 ……」
由梨:「所以說, 39 寫成二進位時,就是 100111 對吧?」
我:「正確答案!」
由梨:「很簡單嘛!」
我:「像由梨這樣,把數字陸續加上 1 的方法並不壞。」
由梨:「可是很麻煩!」
我:「我們可以試著思考看看『將十進位的數轉換成二進位的
數』的一般化方法。如果我們能用某種方式,將 39 寫成 2
的 乘冪 的和,就可以 得到『將 39 寫成 二 進 位 時,為
100111 』這個答案。這樣我們就能在不使用對應表的情況
下,直接算出 100111 。」
由梨:「嗯……」
我:「將 39 寫成二進位時,我們馬上就能看出 1 位是 1 而不是
0 。」
由梨:「為什麼?……啊,因為 39 是奇數嗎?」
我:「就是這樣。將某個數以二進位表示時
如果是偶數, 1 位為 0
如果是奇數, 1 位為 1
換句話說,將某個數以二進位表示時, 1 位會等於這個數
除以 2 時的餘數。 39 除以 2 的商和餘數如下。」
由梨:「嗯嗯。」
我:「所以說,『除以 2 』就是以二進位法表記時的關鍵。」
由梨:「我知道 1 位是除以 2 的餘數了,那 2 位呢?」
我:「思考問題的時候可以想想看『有沒有相似的問題呢』。」
由梨:「啊,要除以 4 的餘數嗎?」
我:「厲害!不過除以 4 的餘數有可能是 0, 1, 2, 3 喔。」
由梨:「這樣啊,可是能用的數就只有 0 和 1 而已……」
我:「假設一個二進位的五位數可以寫成以下形式
a , b , c , d , e 皆為 0 或 1 。因為這是一個二進位的數
字。」
由梨:「嗯……然後呢?」
我:「因為是用二進位法表示,故可以寫成這個樣子。
由梨:「……」
我:「把這個數除以 2 時,可以得到商和餘數如下。
由梨:「提出 2 嗎?」
我:「沒錯。仔細觀察一下商的部分吧。」
由梨:「啊! 8 a + 4 b + 2 c + 1 d ,這也是二進位!」
我:「沒錯,會得到四位數的二進位數字。那麼,接下來我們想求出 d 是多少,該怎麼做呢?」
由梨:「再除以 2 !」
我:「沒錯!將除以 2 之後得到的商再除以 2 ,其餘數就會是d 。」
由梨:「也就是反覆除以 2 就好了嘛!」
我:「觀察這些餘數,可以發現它們會依照 e , d , c , b , a 的順序出現。」
由梨:「原來如此。」
我:「實際用 39 來算算看吧。過程如下。」
由梨:「餘數是 1, 1, 1, 0, 0, 1 ,咦?」
我:「因為我們會先算出 1 位,再陸續算出後面的位數,所以順序要倒過來才行。」
由梨:「原來如此。倒過來之後是 1, 0, 0, 1, 1, 1 ,真的是 100111耶!」
我:「所以說,將 39 改以二進位法表示時,就會變成 100111囉。」
第 1 章 用手指表示位元
1.1 用單手數到31
由梨:「我說哥哥啊!你可以用一隻手數到 31 嗎?」
我:「為什麼突然這麼問呢?」
我是高中生,由梨是我的表妹,還是個國中生。
我們從小就常在一起玩,她總叫我「哥哥」。
今天學校放假,她和平常一樣來我的房間找我,玩玩遊戲、讀讀書之類的……
由梨:「這本書有講到『用一隻手數到 31 的方法』耶。哥哥你會嗎?」
我把視線轉向她現在正在看的書。
我:「啊,妳是說用二進位法來數數字的方法吧。」
由梨:「用二進位法來數數字……哥哥你知道怎麼數嗎?」
我:「會啊,因為我有練...
作者序
序章
幫母親捶捶肩吧。
叩咚叩咚叩咚咚……
來玩黑白棋吧。
黑 白 黑 白 黑 白 白……
讓你看個密技吧。
↑ ↓ ↑ ↓ ↑ ↓ ↓……
傳個訊息給你吧。
1 0 1 0 1 0 0 …
只有兩種模式,可以表現出什麼呢?
只要有兩種模式,就能表現出任何事物。
只有你我兩人,又做得了什麼呢?
只要有你我兩人,就能做到任何事。
不管想做什麼 都做得到。
序章
幫母親捶捶肩吧。
叩咚叩咚叩咚咚……
來玩黑白棋吧。
黑 白 黑 白 黑 白 白……
讓你看個密技吧。
↑ ↓ ↑ ↓ ↑ ↓ ↓……
傳個訊息給你吧。
1 0 1 0 1 0 0 …
只有兩種模式,可以表現出什麼呢?
只要有兩種模式,就能表現出任何事物。
只有你我兩人,又做得了什麼呢?
只要有你我兩人,就能做到任何事。
不管想做什麼 都做得到。
目錄
給讀者
序章
第 1 章 用手指表示位元
1.1 用單手數到
1.2 扳手指的方法
1.3 記數法
1.4 十進位法
1.5 二進位法
1.6 對應表
1.7 在二進位法中逐次加1
1.8 39 會對應到什麼數呢?
1.9 找出規則
1.10 兩個國家
1.11 蒙娜麗莎與變幻的 pixel
第 1 章的問題
第 2 章 變幻的 pixel
2.1 在車站
2.2 在雙倉圖書館
2.3 掃描器的運作機制
2.4 印表機的運作機制
2.5 實際操作看看
2.6 濾波器的運作機制
2.7 除以2
2.8 往右移一個位元
2.9 往右移兩個位元
2.10 往左移一個位元
2.11 將位元反轉
2.12 點心時間
2.13 將左半邊與右半邊交換
2.14 左右翻轉
2.15 濾波器疊加
2.16 兩個輸入的濾波器
2.17 選取輪廓
第 2 章的問題
第 3 章 取補數的技巧
3.1 我的房間
3.2 謎之計算
3.3 2 的補數表示法
3.4 正負號反轉的原因
3.5 溢位
3.6 反轉所有位元再加1
3.7 「無視溢位」的意義
3.8 以 16 為除數的計算
3.9 謎之算式
3.10 有無限個位元的位元型樣
第 3 章的問題
第 4 章 Flip trip
4.1 雙倉圖書館
4.2 Flip trip
4.3 與位元型樣有關
4.4 後半段的 Half trip
4.5 Ruler 函數
4.6 格雷碼
4.7 河內塔
第 4 章的問題
第 5 章 布爾代數
5.1 在圖書室
5.2 與位元型樣的關係
5.3 順序關係
5.4 上界與下界
5.5 最大元與最小元
5.6 補元
5.7 順序公理
5.8 邏輯與集合
5.9 因數與質因數分解
第 5 章的問題
尾聲
解答
給想多思考一點的你
後記
索引
給讀者
序章
第 1 章 用手指表示位元
1.1 用單手數到
1.2 扳手指的方法
1.3 記數法
1.4 十進位法
1.5 二進位法
1.6 對應表
1.7 在二進位法中逐次加1
1.8 39 會對應到什麼數呢?
1.9 找出規則
1.10 兩個國家
1.11 蒙娜麗莎與變幻的 pixel
第 1 章的問題
第 2 章 變幻的 pixel
2.1 在車站
2.2 在雙倉圖書館
2.3 掃描器的運作機制
2.4 印表機的運作機制
2.5 實際操作看看
2.6 濾波器的運作機制
2.7 除以2
2.8 往右移一個位元
2.9 往右移兩個位元
2.10 往左移一個位元
2.11 將位元反轉
2.1...