關(guān)于單片機(jī)的二進(jìn)制與十六進(jìn)制概念總結(jié)
二進(jìn)制(binary),是在數(shù)學(xué)和數(shù)字電路中以2為基數(shù)的記數(shù)系統(tǒng),是以2為基數(shù)代表系統(tǒng)的二進(jìn)位制。這一系統(tǒng)中,通常用兩個(gè)不同的符號(hào)0(代表零)和1(代表一)來(lái)表示。發(fā)現(xiàn)者是萊布尼茨。數(shù)字電子電路中,邏輯門的實(shí)現(xiàn)直接應(yīng)用了二進(jìn)制,現(xiàn)代的計(jì)算機(jī)和依賴計(jì)算機(jī)的設(shè)備里都使用二進(jìn)制。每個(gè)數(shù)字稱為一個(gè)比特(Bit,Binary digit的縮寫)。
數(shù)字電路中只有兩種電平特性,即高電平和低電平,這也就決定了數(shù)字電路中使用二進(jìn)制。十進(jìn)制數(shù)大家應(yīng)該都不陌生,“逢十進(jìn)一,借一當(dāng)十”是十進(jìn)制數(shù)的特點(diǎn)。有了十進(jìn)制數(shù)的基礎(chǔ),我們學(xué)習(xí)二進(jìn)制數(shù)便非常容易了,“逢二進(jìn)一,借一當(dāng)二”便是二進(jìn)制數(shù)的特點(diǎn)。
十進(jìn)制轉(zhuǎn)換為二進(jìn)制
一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)要分整數(shù)部分和小數(shù)部分分別轉(zhuǎn)換,最后再組合到一起。
整數(shù)部分采用"除2取余,逆序排列"法。具體做法是:用2整除十進(jìn)制整數(shù),可以得到一個(gè)商和余數(shù);再用2去除商,又會(huì)得到一個(gè)商和余數(shù),如此進(jìn)行,直到商為小于1時(shí)為止,然后把先得到的余數(shù)作為二進(jìn)制數(shù)的低位有效位,后得到的余數(shù)作為二進(jìn)制數(shù)的高位有效位,依次排列起來(lái)。
十進(jìn)制數(shù)1轉(zhuǎn)換為二進(jìn)制數(shù)是1B(這里B是表示二進(jìn)制數(shù)的后綴);十進(jìn)制數(shù)2轉(zhuǎn)換為二進(jìn)制數(shù)時(shí),因?yàn)橐呀?jīng)到2,所以需要進(jìn)1,那么二進(jìn)制數(shù)即為10B;十進(jìn)制數(shù)5轉(zhuǎn)換為二進(jìn)制數(shù),2為10B,那么3即為10B+1B=11B,4即為11B+1B=100B,5即為100B+1B=101B。依次類推,當(dāng)十進(jìn)制數(shù)為254時(shí),對(duì)應(yīng)二進(jìn)制數(shù)為11111110B
我們可找出一般規(guī)律,當(dāng)二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)時(shí),從二進(jìn)制數(shù)的最后一位起往前看,每一位代表的數(shù)為2的n次幕,這里的n表示從最后起的第幾位二進(jìn)制數(shù),n從0算起,若對(duì)應(yīng)該二進(jìn)制數(shù)位上有1,那么就表示有值,為0即無(wú)值。例如,再把二進(jìn)制數(shù)11111110B反推回十進(jìn)制數(shù),計(jì)算過程如下:
其中2"稱為“位權(quán)”。對(duì)于十進(jìn)制數(shù)與二進(jìn)制數(shù)之間的轉(zhuǎn)換,我們能夠熟練掌握0?15以內(nèi)的數(shù)就夠用了,為了方便記憶,我們歸納如表1.4.1所示。
表1.4.1十進(jìn)制數(shù)和二進(jìn)制數(shù)之間的轉(zhuǎn)換表
我們?cè)谶M(jìn)行單片機(jī)編程時(shí)常常會(huì)用到其他較大的數(shù),這時(shí)我們用Windows系統(tǒng)自帶的計(jì)算器,可以非常方便地進(jìn)行二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù)之間的任意轉(zhuǎn)換,如圖1.4.1所示。
圖141 Windows自帶的計(jì)算器
計(jì)算機(jī)采用二進(jìn)制原因
首先,二進(jìn)位計(jì)數(shù)制僅用兩個(gè)數(shù)碼。0和1,所以,任何具有二個(gè)不同穩(wěn)定狀態(tài)的元件都可用來(lái)表示數(shù)的某一位。而在實(shí)際上具有兩種明顯穩(wěn)定狀態(tài)的元件很多。例如,氖燈的“亮”和“熄”;開關(guān)的“開”和“關(guān)”;電壓的“高”和“低”、“正”和“負(fù)”;紙帶上的“有孔”和“無(wú)孔”;電路中的“有信號(hào)”和“無(wú)信號(hào)”;磁性材料的南極和北極等等,不勝枚舉。利用這些截然不同的狀態(tài)來(lái)代表數(shù)字,是很容易實(shí)現(xiàn)的。不僅如此,更重要的是兩種截然不同的狀態(tài)不單有量上的差別,而且是有質(zhì)上的不同。這樣就能大大提高機(jī)器的抗干擾能力,提高可靠性。而要找出一個(gè)能表示多于二種狀態(tài)而且簡(jiǎn)單可靠的器件,就困難得多了。
其次,二進(jìn)位計(jì)數(shù)制的四則運(yùn)算規(guī)則十分簡(jiǎn)單。而且四則運(yùn)算最后都可歸結(jié)為加法運(yùn)算和移位,這樣,電子計(jì)算機(jī)中的運(yùn)算器線路也變得十分簡(jiǎn)單了。不僅如此,線路簡(jiǎn)化了,速度也就可以提高。這也是十進(jìn)位計(jì)數(shù)制所不能相比的。
第三,在電子計(jì)算機(jī)中采用二進(jìn)制表示數(shù)可以節(jié)省設(shè)備。可以從理論上證明,用三進(jìn)位制最省設(shè)備,其次就是二進(jìn)位制。但由于二進(jìn)位制有包括三進(jìn)位制在內(nèi)的其他進(jìn)位制所沒有的優(yōu)點(diǎn),所以大多數(shù)電子計(jì)算機(jī)還是采用二進(jìn)制。此外,由于二進(jìn)制中只用二個(gè)符號(hào)“0”和“1”,因而可用布爾代數(shù)來(lái)分析和綜合機(jī)器中的邏輯線路。這為設(shè)計(jì)電子計(jì)算機(jī)線路提供了一個(gè)很有用的工具。第四,二進(jìn)制的符號(hào)“1”和“0”恰好與邏輯運(yùn)算中的“對(duì)”(true)與“錯(cuò)”(false)對(duì)應(yīng),便于計(jì)算機(jī)進(jìn)行邏輯運(yùn)算。
十六進(jìn)制
十六進(jìn)制與二進(jìn)制大同小異,不同之處就是十六進(jìn)制是“逢十六進(jìn)一,借一當(dāng)十六”。還有一點(diǎn)特別之處需要注意,十進(jìn)制的。0?15表示成十六進(jìn)制數(shù)分別為0~9,A,B,C,D,E,F,即十進(jìn)制的10對(duì)應(yīng)十六進(jìn)制的A,11對(duì)應(yīng)B,……,15對(duì)應(yīng)F。我們一般在十六進(jìn)制數(shù)的最后面加上后綴H,表示該數(shù)為十六進(jìn)制數(shù),如AH,DEH等。這里的字母不區(qū)分大小寫,在C語(yǔ)言編程時(shí)要寫成“Oxa,Oxde”,在數(shù)的最前面加上“Ox”表示該數(shù)為十六進(jìn)制數(shù)。十進(jìn)制數(shù)與十六進(jìn)制數(shù)之間的轉(zhuǎn)換在這里不再講解,大家可參考十進(jìn)制數(shù)與二進(jìn)制數(shù)之間的轉(zhuǎn)換規(guī)則。關(guān)于十進(jìn)制、二進(jìn)制與十六進(jìn)制數(shù)之間的轉(zhuǎn)換,我們要熟練掌握。0?15之間的數(shù),因?yàn)樵谝院蟮?a href="/tags/單片機(jī)" target="_blank">單片機(jī)C語(yǔ)言編程當(dāng)中,我們要大量使用它們。一般的轉(zhuǎn)換規(guī)律是,先將二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),再將十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù),若大家現(xiàn)在記憶不牢,也可在以后的學(xué)習(xí)中邊學(xué)邊加深記憶。二進(jìn)制、十進(jìn)制、十六進(jìn)制0?15的數(shù)的轉(zhuǎn)換列表如表1.4.2所示。