iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
1
Software Development

你會十五種程式語言?不,我會十五種HelloWorld.為了避免這種狀況,因此寫了這篇:淺入淺出十五種程式語言系列 第 3

16 進制與 10 進制

16 進制與 10 進制

什麼是進制?

進制其實就是指數字的每個位置所能容納的最大數字

比方說以我們最常見的十進制為例:

如果我們要表示 9 這個數字

可以直接寫出來

9

但是如果我們想將這個數字+1 該怎麼辦?
在十進制中我們並沒有可以表達 10 這個數字的符號,因此我們需要進位

10

https://ithelp.ithome.com.tw/upload/images/20200903/20127836ciSZFR0cXh.png

如果我們想再對眼前這個數字+1
由於第一個項次已經變成 0 了,所以我們可以繼續往上加

11

https://ithelp.ithome.com.tw/upload/images/20200903/20127836uwx6FHgAVq.png

現在讓我們轉換一下思路, 如果現在我們使用的是 2 進制呢?

那表示我們在數字的每的位置都只有兩個數字能夠來表達數值

如果我們想要在二進制寫出 2

https://ithelp.ithome.com.tw/upload/images/20200903/20127836abJO4xprX3.png

因此我們需要進位

https://ithelp.ithome.com.tw/upload/images/20200903/20127836RjQpdlNzPK.png

等一下,這個數字我怎麼看都是 10,怎麼會是 2 勒

這是由於現在我們所使用的表達方式跟我們常見的表達方式不同

https://ithelp.ithome.com.tw/upload/images/20200903/20127836nQTSguCwiM.png

為什麼要這樣? 全部都使用 10 進制不是很好?

會使用 10 進制的理由是因為我們人有十根手指,所以當初發明數字的時候就使用了 10 進制
但是電腦只認得 0 跟 1,所以當然也只認得 2 進制

可以舉個現實生活中的例子嗎?

當然可以

  • 你會說 5 點 61 分嗎?
    不會,因為你會把 60 分進位成一個小時變成 6 點 01 分

  • 你會說 3 月 32 日嗎?
    不會,因為你會把 31 天進位成一個月變成四月一日

現在,讓我們來談談 16 進制

十六進制代表我們每個位置都有 16 個符號分別代表 0~15(總共 16 個數值)

在表達數字 0~9 的時候我們都可以直接寫出來,因為十進制跟十六進制的前十個符號基本是相同的
比方說我們現在寫個數字 9,十進制跟十六進制基本上都可以這樣表達

9

但是如果我們要對這個數字+1 呢?
十進制可以直接寫成數字 10

10

但是十六進制不行
因為在十六進制寫成 10 的話就會變成

https://ithelp.ithome.com.tw/upload/images/20200903/20127836zFCTHOsXlH.png

等等,那如果我們要表達數值 10 該怎麼辦?

以下就是十進制跟十六進制的符號對照表

進制
十進制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
十六進制 0 1 2 3 4 5 6 7 8 9 A B C D E F 10

所以若是我們要在十六進制裡面表示 10 的話就只要寫下 A 即可

那為什麼要特地說 16 而不是 15,14 或 17?

理由是因為十六進制跟二進制的轉換是最方便的

進制
二進制 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
十六進制 0 1 2 3 4 5 6 7 8 9 A B C D E F

所以當我們要轉換二進制時可以直接把二進制的數值四個一組分別寫出他們相對應的數值即可

  • 1000111001011100

可以分成 1000 1110 0101 1100
再分別去找他們對應的數值

進制 第一組 第二組 第三組 第四組
二進制 1000 1110 0101 1100
十六進制 8 E 5 C

轉換完成就是 8E5C
是不是瞬間就短了許多?
相較之下如果剛才那串數字要轉成十進制就比較困難,需要去看每個位置的 0 跟 1 究竟代表多少

現在,讓我們來談談如何運算

因為上面就算列出了 8E5C 你依舊不知道這個數值究竟有多大

在對照表裡面只有列出 0~F,而 8E5C 很明顯大得多
所以我們必須做運算

https://ithelp.ithome.com.tw/upload/images/20200903/20127836dX2UszVPoo.png

看出規則了嗎?
其實跟十進位一樣每個位置都有各自代表的數值,只要將當前數值乘上當前位置所代表的數值即可

有了計算的概念我們就可以來寫我們的計算工具了
明天就可以開始動工我們的程式拉

延伸閱讀

  • 想知道更多關於二進制與資料的關係可以看中山大學楊昌彪教授的影片

https://www.youtube.com/watch?v=b8wr9AUPDMM#t=1m9s


上一篇
基本工具
下一篇
C# 如同精靈般優雅且高貴 (上)
系列文
你會十五種程式語言?不,我會十五種HelloWorld.為了避免這種狀況,因此寫了這篇:淺入淺出十五種程式語言30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言