進(jìn)制,看似很簡(jiǎn)單的東西,但很多同學(xué)還是不能徹底理解。這里先簡(jiǎn)單介紹一些注意事項(xiàng),然后還是從實(shí)驗(yàn)中講解會(huì)比較深刻。
1) 十進(jìn)制就不多說(shuō)了,逢十進(jìn)位,一個(gè)位有十個(gè)值:0~9,我們的生活中到處都是它的身影。二進(jìn)制就是逢二進(jìn)位,它的一個(gè)位只有兩個(gè)值:0和1,但它卻是實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)的最基本的理論基礎(chǔ),計(jì)算機(jī)(包括單片機(jī))芯片是基于成萬(wàn)上億個(gè)的開(kāi)關(guān)管組合而成的,他們每一個(gè)都只能有開(kāi)和關(guān)兩種狀態(tài),再難找出第三個(gè)狀態(tài)了(不要辯解半開(kāi)半關(guān)這個(gè)狀態(tài),它是不穩(wěn)定態(tài),是極力避免的),所以他們只能對(duì)應(yīng)于二進(jìn)制的1和0兩個(gè)值,而沒(méi)有2、3、4......,理解二進(jìn)制對(duì)于理解計(jì)算機(jī)的本質(zhì)很有幫助。書(shū)寫二進(jìn)制數(shù)據(jù)時(shí)需加前綴 0b,每一位的值只能是0或1。十六進(jìn)制就是把4個(gè)二進(jìn)制位組合為一位來(lái)表示,于是它的每一位有 0b0000~0b1111 共16個(gè)值,用0~9再加上 A~F(或 a~f)表示,那么它自然就是逢十六進(jìn)位了,它本質(zhì)上同二進(jìn)制是一樣的,是二進(jìn)制的一種縮寫形式,也是我們程序編寫中常用的形式。書(shū)寫十六進(jìn)制數(shù)據(jù)時(shí)需加前綴0x,下表是三種進(jìn)制之間的對(duì)應(yīng)關(guān)系。
http://wiki.jikexueyuan.com/project/mcu-tutorial-one/images/44.png" alt="" />
2) 對(duì)于二進(jìn)制來(lái)說(shuō), 8位二進(jìn)制我們稱之為一個(gè)字節(jié),二進(jìn)制的表達(dá)范圍值是從0b00000000 ~ 0b11111111,而我們?cè)诔绦蛑杏檬M(jìn)制表示的時(shí)候就是從0x00到0xFF,這里教大家一個(gè)二進(jìn)制轉(zhuǎn)換十進(jìn)制和十六進(jìn)制的方法,二進(jìn)制4位一組,遵循8/4/2/1的規(guī)律比如 0b1010,那么從最高位開(kāi)始算,數(shù)字大小是 81+40+21+10 = 10,那么十進(jìn)制就是10,十六進(jìn)制就是 0xA。尤其二進(jìn)制轉(zhuǎn)十六進(jìn)制的時(shí)候,十六進(jìn)制一位剛好是和二進(jìn)制的4位相對(duì)應(yīng)的,這些大家不需要強(qiáng)行記憶,多用幾次自然就熟練了。
3) 對(duì)于進(jìn)制來(lái)說(shuō),只是數(shù)據(jù)的表現(xiàn)形式,而數(shù)據(jù)的大小不會(huì)因?yàn)檫M(jìn)制表現(xiàn)形式不同而不同
,比如二進(jìn)制的 0b1、十進(jìn)制的1、十六進(jìn)制的 0x01,他們本質(zhì)上是數(shù)值大小相等的同一個(gè)數(shù)據(jù)。我們?cè)谶M(jìn)行 C 語(yǔ)言編程的時(shí)候,我們只寫十進(jìn)制和十六進(jìn)制,那么不帶 0x 的就是十進(jìn)制,帶了 0x 符號(hào)的就是十六進(jìn)制。