第四話 那些數字

一、關於那些數字

很不幸的,我覺得還是必須要簡單的述說一下,關於那些不重要的數字。

在程式世界裡頭,僅存在著0與1兩個極端值,透過一些規則,可以使其產生更多變化,這些規則就是我們所謂的數字系統,我們可以藉由計算機概論內的一些東西來幫助我們理解數字系統。

電腦內最小的容量計數單位為bit,1個bit就是等於0或1沒有第三個數字,所以bit表示法也就是屬於二進制表示法,因為只有0,1兩個,所以就是叫做二進制。

日常生活中,我們習慣用的進制法則為10進制,所以可以理解,所謂的「進制」,指的就是「進位的機制」,例如,0~9後因為到達了10所以就變成兩位數的「1」「0」。

在程式裡頭,我們還習慣使用另外一種16進制的表示法,也就是0~F,由數字9後開始A、B、C、D、E、F代表十進制的10、11、12、13、14、15,在16進制表示法內,我們習慣用0x作為開頭,或者使用h作為結尾,例如0x1F或1Fh這樣的表示方法,回到計算機概論裡的單位表示,由剛剛最小的單位bit組成8bit後,則為1byte,這個概念有點像是10個1塊錢,可以換1個十塊錢是一樣的道理,此時殘酷的現實來了

1byte  = 8bit = 16進制的多少數值 = 10進制的多少數值?

如果你看到這裡可以明白的話,下面的東西可以省略不看了,如果一頭霧水的話,就聽我娓娓道來吧。

8bit最大表示在二進制時為 = 11111111b,當8個1都用上時,就是8bit最大數值,此時等於十進制的255,同等於16進制的0xFF

為什麼是等於10進制的255呢?因為他進位了255次,所以同等於10進制的255。

如果真的還是不明白進制系統的話,請參考維基百科的說明,或者google進制

 二、為什麼要知道2進制與16進制?

在MCU的種類區分裡,分著8bit MCU、16bit MCU、32bit MCU未來甚至更高,這些bit數所代表的,就是內部系統的位元數,以8bit MCU來說,即代表每個register的長度都是8bit,位址的長度也是8bit,故我們必須熟悉2進制的表示法。

又為什麼要知道16進制表示法?因為在2進制表示中,容易造成程式撰寫上的困擾,例如某暫存器設定要為127時,二進制就要寫成01111111b就容易造成錯誤,但是如果寫成0x7F時,就可以簡單的省去一些麻煩,純粹只是方便閱讀跟撰寫而已。其中也因為在撰寫MCU時如果使用C語言的時候,並無法使用二進制直接撰寫(二進制是不被標準C語言接受的),所以在數值操作上,大多以10進制與16進制為多。

 

2 thoughts on “第四話 那些數字

  1. "二進制就要寫成0111111b就容易造成錯誤", 少一個 1, 應該是
    "二進制就要寫成01111111b就容易造成錯誤"
    感謝你的分享!!

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料