iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
Software Development

三十天內用C++寫出一個小遊戲系列 第 6

Day 6 - 二進位會不會被禁位?

簡介

今天要介紹的東西,是在編寫程式的時候,可能需要具備的一個知識,但是好像不知道也不會影響那麼大(對於如果未來不是寫系統或是後端的工程師),但是因為這東西從小提到大,卻好像沒有深入了解,因此對於數學不太熟練的我就努力的學習了一番。我也不會寫到太難的東西(畢竟我自己也不會哈哈)。


進位制

對於我們一般台灣人的生活,最常接觸到的就是十進位制還有六十進位制!但是什麼是進位制?

請問是因為台灣前陣子水很缺乏,需要禁止衛浴嗎,禁衛制

還是因為疫情嚴峻,需要禁位,禁位制?

都不是。

首先我們來了解一下進位。

通常我們在小學開始,就會被教導 1 + 1 = 2 、1 + 2 = 3、1 + 3 = 4 ……當1 加到9的時候就會進位,這個進位方式,就是所謂的十進位制。

接下來另一個常見的進位制是時鐘,當秒針轉到 60 秒的時候,分針就會轉動1 / 60 圈,也就是一分鐘;而當分針轉動60圈的時候,時針也會轉動1 /60圈,也就是一個小時,這樣的進位制稱作六十進位制。

所以其實,日常生活中會用到很多有關數學的東西,他們也沒有想像中的那麼可怕。


二進位

接下來要介紹的是二進位,一些略懂電腦的人們可能知道,在電腦的語言中是由0與1所組成的,但可能不太知道這些0 與 1 是怎麼運作的。

首先,拿十進位來舉例,就是每當數字加到10的時候就會進位;同理來說,在二進位裡面,每當數字加到2的時候就會進位。

例如1 再加 1 就會變成 10

再加 1 就會變成 11,如果這個時候再加 1 就會再進位變成 100

【二進位中的 1 - 32】

二進位 十進位 二進位 十進位
000 001 1 010 001 17
000 010 2 010 010 18
000 011 3 010 011 19
000 100 4 010 100 20
000 101 5 010 101 21
000 110 6 010 110 22
000 111 7 010 111 23
001 000 8 011 000 24
001 001 9 011 001 25
001 010 10 011 010 26
001 011 11 011 011 27
001 100 12 011 100 28
001 101 13 011 101 29
001 110 14 011 110 30
001 111 15 011 111 31
010 000 16 100 000 32

從上面可以看到,我以六個數字為一組來表示,當十進位是0時,二進位是 000 000 ,但是十進位到4 的時候,二進位就會從000 011進位到 000 100,之後也以此類推。其實有個更好的判斷方式,就是從右邊數來第n個數字當作2(n-1) 次方,就拿19來舉例。

我們可以把19拆解成1 x 16 + 1 x 2 + 1 x 1就等於是1 x 2^4 + 1 x 2^1 + 1 x 2^0,如果回到二進位的那一串數字來看:

【19的二進位與二的次方對照表】

6 5 4 3 2 1
0 1 0 0 1 1
2^5 2^4 2^3 2^2 2^1 2^0
=32 =16 =8 =4 =2 =1

這樣的方式也可以對應到任何的以 R 為底的近位制,像是4進位、8進位、16進位,或7進位、23進位都是可以的。


冷知識

你知道為什麼時間上要用60 進位來計算嗎? ~~每日頭條~~

(A) 因為60很酷

(B) 因為60等分比較好切

(C) 因為60不多也不少 剛剛好

答案其實都對!

如果把60做因式分解:1、2、3、4、5、6、10、12、15、20、30、60,代表,60這個數字可以拆解成很多種組合,也就是1個小時,可以拆解成1個60分、2個30分、4個15分、5個12分、6個10分、10個6分、12個5分、15個4分、30個2分、60個1分;但若是用50做因式分解:1、2、5、10、25、50,等於1個小時頂多只能拆解成1個50分鐘、2個25分、5個10分、10個5分、25個2分、50個1分。相對來說如果以50分為一小時,可以拆解的方式更少,但在日常生活中,時間很長被拆解成不同長度,像是10分(1/6小時)、15分(1/4小時)、20分(1/3小時),但是如果今天是用50分為一個小時,你的1/4小時可能會叫作12.5分鐘,1/3小時會被叫作16.6666666分鐘。

另外,由於在製作時鐘的時候,因為從前難以準確分出6或是12以外的切法。在一個圓中,最好切的方式就是將它像切 pizza 一樣切成6等份,然後再從每份的中間切下去就會得到12份。


小結

這次先簡單的介紹一下進位制是如何運作的,而裡面比較重要的當然就是二進位了! 在下一篇會介紹一下二進位的進階版,4進位、8進位;還有16進位。


上一篇
Day 5 - 如果有如果
下一篇
Day 7 - 數學是不是會擊垮一個人的信心? 會
系列文
三十天內用C++寫出一個小遊戲30

尚未有邦友留言

立即登入留言