版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
網(wǎng)絡(luò)空間安全學(xué)院網(wǎng)絡(luò)安全基礎(chǔ)技術(shù)應(yīng)用第一章單片機(jī)里的數(shù)目錄CONTENT1.二進(jìn)制數(shù)2.進(jìn)制的轉(zhuǎn)換和有符號(hào)數(shù)3.單片機(jī)程序中的數(shù)據(jù)類型1.1.1二進(jìn)制數(shù)的電路實(shí)現(xiàn)單片機(jī)是一顆集成電路芯片,如圖1.1-1所示。集成電路是采用特定的制造工藝,將晶體管、電容、電阻和電感等元件以及布線互聯(lián),制作在半導(dǎo)體晶片上,進(jìn)而封裝在一個(gè)管殼內(nèi),變成具有某種電路功能的微型電子器件。集成電路的基本元器件是晶體管(包括了三極管、場效應(yīng)管等),它的開關(guān)特性構(gòu)成了計(jì)算機(jī)世界0和1的物理基礎(chǔ),是計(jì)算機(jī)信息存儲(chǔ)和運(yùn)算的基石。圖1.1-2是三極管輸出特性。圖1.1-1單片機(jī)芯片圖1.1-2三極管的輸出特性曲線1.1.1二進(jìn)制數(shù)的電路實(shí)現(xiàn)1.當(dāng)三極管處于飽和區(qū),VCE間電壓很小,近似0V,相當(dāng)于短路。因此三極管飽和時(shí),三極管輸出低電平,用二進(jìn)制符號(hào)“0”表示,如圖1.1-3(a)所示。2.當(dāng)三極管處于截止?fàn)顟B(tài),IC=0,相當(dāng)于斷路。C極電壓等于電源電壓VCC,三極管輸出高電平,用二進(jìn)制符號(hào)“1”表示,如圖1.1-3(b)所示。圖1.1-3是三極管開關(guān)等效電路圖1.1-3中三極管具有二態(tài)性,要么關(guān)閉要么打開,二進(jìn)制數(shù)也有這樣的特點(diǎn),要么“1”要“0”,用二進(jìn)制數(shù)完美表達(dá)了三極管的二態(tài)性,因此我們忽略計(jì)算機(jī)的底層器件,只關(guān)注計(jì)算機(jī)的數(shù)。圖1.1-3(a)圖1.1-3(b)圖1.1-31.1.2數(shù)的符號(hào)和記法古代人們用石頭記數(shù)、結(jié)繩記數(shù)、刻痕記數(shù),后來出現(xiàn)了阿拉伯?dāng)?shù)字0~9,這10個(gè)數(shù)字和人類10個(gè)手指的數(shù)量正好吻合,且符號(hào)好寫好記,很快成為國際通用數(shù)字符號(hào)。阿拉伯?dāng)?shù)字是十進(jìn)制數(shù),采用位值法,加上小數(shù)點(diǎn)、正負(fù)號(hào),可以表示所有的有理數(shù)。所謂進(jìn)制,就是進(jìn)位的方法:二進(jìn)制——逢2進(jìn)1;八進(jìn)制——逢8進(jìn)1;十進(jìn)制——逢10進(jìn)1;十六進(jìn)制——逢16進(jìn)1。1.1.2數(shù)的符號(hào)和記法每種進(jìn)制使用的符號(hào)是不一樣的,“符號(hào)”意味著一種表示方法。二進(jìn)制的符號(hào)最少,十六進(jìn)制的符號(hào)最多。如表1.1-1所示。二進(jìn)制符號(hào)0,1。八進(jìn)制符號(hào):0到7十進(jìn)制符號(hào):0到9。十六進(jìn)制符號(hào):0到F。表1.1-1不同進(jìn)制數(shù)的符號(hào)(字母不區(qū)分大小寫)進(jìn)制符號(hào)進(jìn)位法則二進(jìn)制0,1逢二進(jìn)一八進(jìn)制0,1,2,3,4,5,6,7逢八進(jìn)一十進(jìn)制0,1,2,3,4,5,6,7,8,9逢十進(jìn)一十六進(jìn)制0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f逢十六進(jìn)一1.1.2數(shù)的符號(hào)和記法所謂位值法,是一種計(jì)數(shù)方法。一組有順序的數(shù)字,每個(gè)數(shù)字所表示的大小,既和它本身的數(shù)值有關(guān),也和它所在的位置有關(guān)。位值法中,數(shù)字所在的位置也稱權(quán)重。位值法的核心思想是,相同的數(shù)字在不同的位置上具有不同的數(shù)值。表1.1-1中的進(jìn)制都采用位值法計(jì)數(shù),以整數(shù)部分是4位,小數(shù)部分也是4位的任意數(shù)為例,不同進(jìn)制下的權(quán)重如表1.1-2所示。表1.1-2不同進(jìn)制的權(quán)重(X代表某進(jìn)制的任意符號(hào))進(jìn)制XXXX.XXXX二進(jìn)制232221202-12-22-32-4八進(jìn)制838281808-18-28-38-4十進(jìn)制10310210110010-110-210-310-4十六進(jìn)制16316216116016-116-216-316-41.1.2數(shù)的符號(hào)和記法八、十、十六進(jìn)制數(shù)的權(quán)重基數(shù)分別是2、8、10、16,權(quán)重的冪和位置有關(guān)。在位值法中,當(dāng)數(shù)值超過了符號(hào)表達(dá)的范圍,就從左往右進(jìn)位。表1.1-3列出了0~20不同進(jìn)制下的記數(shù),如果要表達(dá)相同數(shù)值的數(shù)字,二進(jìn)制數(shù)最長,十六進(jìn)制數(shù)最短。表1.1-3數(shù)字0~20在不同進(jìn)制下的記法十進(jìn)制二進(jìn)制16進(jìn)制0001112102311341004510156110671117810008910019101010A十進(jìn)制二進(jìn)制16進(jìn)制111011B121100C131101D141110E151111F1610000101710001111810010121910011132010100141.1.2數(shù)的符號(hào)和記法為了區(qū)分各種進(jìn)制,采用后綴、前綴、下標(biāo)等標(biāo)記方法書寫不同進(jìn)制的數(shù)。通常匯編程序使用后綴法,C語言程序使用前綴法,不區(qū)分大小寫。(1)后綴法。B:binary,二進(jìn)制,123BO:octonary,八進(jìn)制,123OD:decimal,十進(jìn)制,123DH:hexadecimal,十六進(jìn)制,123H。(2)下標(biāo)法:(101001)2(1321)8(100)10,也可以不寫下標(biāo),直接寫100,不寫下標(biāo)默認(rèn)是十進(jìn)制。(3AC)161.1.2數(shù)的符號(hào)和記法(3)前綴法。0b:表示二進(jìn)制。舉例:0b101001,0b11000o:表示八進(jìn)制。舉例:0o1321,0o144沒有前綴:表示十進(jìn)制。舉例:10,20,25,1000x:表示16進(jìn)制數(shù)。舉例:0x64,0x3AC表1.1-4展示了數(shù)字100在不同進(jìn)制下程序里的前后綴表示方法,單片機(jī)程序中最常使用的是十六進(jìn)制和十進(jìn)制。表1.1-4計(jì)算機(jī)語言中不同進(jìn)制的前后綴(以100為例,不區(qū)分大小寫)進(jìn)制英文符號(hào)前綴(C語言)后綴(匯編語言)二進(jìn)制Binary0,10b0110010001100100B八進(jìn)制Octal0-70o144144O十進(jìn)制Decimal0-9100100D十六進(jìn)制Hexadecimal0-9,A-F0x6464H1.1.3數(shù)的長度1.比特(bit)一位二進(jìn)制的數(shù)字要么是0,要么是1,我們說二進(jìn)制的一個(gè)數(shù)字位就是1個(gè)比特(bit)。比特也是信息量單位。一串二進(jìn)制符號(hào)構(gòu)成了一個(gè)信息塊,信息塊有多少個(gè)二進(jìn)制符號(hào),就說有多少個(gè)bit的信息量。在計(jì)算機(jī)物質(zhì)世界里,1個(gè)比特是1個(gè)半導(dǎo)體晶體管開關(guān)器件,參考圖1.1-3,它有“0”或“1”兩種可能值,1比特是1個(gè)二進(jìn)制數(shù)字位。怎么理解bit的概念呢?將圖1.1-3中的三極管替換成游戲手柄,1號(hào)手柄控制前進(jìn)和后退兩個(gè)方向,手柄向前是前進(jìn),手柄向后是后退,此時(shí)該“手柄”就是1個(gè)bit?,F(xiàn)在增加2號(hào)手柄,控制左右兩個(gè)方向:手柄向左是左拐,手柄向右是右拐。它和1號(hào)手柄組合在一起,可控制四個(gè)方向,用四組編碼表示:左前=00右前=10左后=01右后=111.1.3數(shù)的長度由此可知,兩位二進(jìn)制數(shù),有四種組合,一個(gè)組合稱為一個(gè)“碼字”,在這個(gè)舉例里有4個(gè)碼字,分別是00、01、10、11。比特位數(shù)越多,編出的碼字就越多。碼字?jǐn)?shù)量用2的冪次方計(jì)算,對(duì)應(yīng)關(guān)系如表1.1-5所示。表1.1-5二進(jìn)制位數(shù)和碼字?jǐn)?shù)量對(duì)應(yīng)關(guān)系二進(jìn)制位數(shù)碼字?jǐn)?shù)量121=2=(10)2222=4=(100)2323=8=(1000)2424=16=(10000)2525=32=(100000)2626=64=(1000000)2727=128=(10000000)2828=256=(100000000)2929=512=(1000000000)210210=1024=(10000000000)211211=2048=(100000000000)212212=4096=(1000000000000)21.1.3數(shù)的長度觀察表1.1-5,有如下2個(gè)結(jié)論:二進(jìn)制位的數(shù)量決定了碼字?jǐn)?shù)量,碼字?jǐn)?shù)量隨著二進(jìn)制位數(shù)的增加呈冪增長。 (公式1)2個(gè)比特能編出4個(gè)碼字;3個(gè)比特能編出8個(gè)碼字。第1列“位數(shù)”和第2列中“0”的個(gè)數(shù)一致,比如,10位二進(jìn)制數(shù),碼字?jǐn)?shù)量是1024個(gè),1024用二進(jìn)制表示,1的后面有10個(gè)“0”,互相呼應(yīng)。1.1.3數(shù)的長度2.字節(jié)(byte)1個(gè)字節(jié)由8位二進(jìn)制數(shù)構(gòu)成。表1.1-5表明1個(gè)字節(jié)的碼字?jǐn)?shù)量是256,可編碼字從0b00000000到0b11111111,對(duì)應(yīng)數(shù)值范圍0~255。一個(gè)字節(jié)足以表達(dá)某種生活中很多事務(wù)的狀態(tài),比如天氣的變化,各種組合都沒超出256種;通用計(jì)算機(jī)的鍵盤也沒達(dá)到256個(gè)按鍵,……。因此,在計(jì)算機(jī)世界里字節(jié)是基本單位,單片機(jī)程序里使用最多的數(shù)據(jù)類型就是1個(gè)字節(jié)長度的數(shù)據(jù)。圖1.1-4展示了1個(gè)字節(jié)按位展開的格式,位值高(最高有效位,MSB)的在前,位值低(最低有效位,LSB)的在后。圖1.1-4也是單片機(jī)的1個(gè)存儲(chǔ)單元,1個(gè)存儲(chǔ)單元的容量是1個(gè)字節(jié)。bit7bit6bit5bit4bit3bit2bit1bit0字節(jié)Byte
圖1.1-4字節(jié)按位展開1.1.4二進(jìn)制編碼計(jì)算機(jī)處理的信息除了數(shù)字,還有字母、圖形、漢字、聲音等非數(shù)值數(shù)據(jù),這樣就出現(xiàn)了編碼的需求。“編碼”是信息從一種形式轉(zhuǎn)換為另一種形式的過程,具體講就是讓多位二進(jìn)制數(shù)表達(dá)某個(gè)特定的信息。因?yàn)閚位二進(jìn)制數(shù)可以組合成2的n次方個(gè)不同的信息,所以給每個(gè)信息規(guī)定一個(gè)具體碼字,這個(gè)過程就叫編碼。1.BCD碼(Binary-CodedDecimal)BCD碼以4位二進(jìn)制數(shù)為一個(gè)單位表示1位十進(jìn)制數(shù)。按照表1.1-5,4位二進(jìn)制數(shù)有16個(gè)碼字,但是十進(jìn)制數(shù)只有0~9十個(gè)數(shù)字符號(hào),多出來6個(gè),所以BCD碼只用了前10個(gè)0000~1001表示十進(jìn)制的0~9,剩下的碼字不用。BCD碼也用來表示十六進(jìn)制數(shù),此時(shí)16個(gè)碼字全部使用。因?yàn)槎M(jìn)制各位的權(quán)值為8、4、2、1,二進(jìn)制對(duì)十進(jìn)制、十六進(jìn)制的編碼是加權(quán)求和,因此也稱8421有權(quán)碼。1.1.4二進(jìn)制編碼表1.1-6列出了BCD編碼。多位的十進(jìn)制數(shù)要用多組BCD碼表示。十六進(jìn)制同理。例1:十進(jìn)制的123用BCD碼表示:0001001000111:1=0×23+0×22+0×21+1×20,1的編碼是0001;2:2=0×23+0×22+1×21+0×20,2的編碼是0010;3:3=0×23+0×22+1×21+1×20,3的編碼是0011;例2:十六進(jìn)制數(shù)0x6F8用BCD碼表示:0110111110006:1=0×23+1×22+1×21+0×20,6的編碼是0110;F:15=1×23+1×22+1×21+1×20,F(xiàn)的編碼是1111;8:8=1×23+0×22+0×21+0×20,8的編碼是1000;1.1.4二進(jìn)制編碼十進(jìn)制數(shù)BCD碼
十六進(jìn)制數(shù)BCD碼00000000001000110001200102001030011300114010040100501015010160110601107011170111810008100091001910011000010000A10101100010001B10111200010010C11001300010011D11011400010100E11101500010101F111116000101101000010000表1.1-6BCD編碼1.2.1十進(jìn)制數(shù)轉(zhuǎn)換為R進(jìn)制計(jì)算機(jī)里二進(jìn)制的數(shù)據(jù)有以下幾種長度:位(bit):一個(gè)二進(jìn)制數(shù)就是一個(gè)位,稱為比特,數(shù)值范圍0、1。字節(jié)(byte):8位二進(jìn)制數(shù)構(gòu)成,數(shù)值范圍0~255或0x00~0xFF。字(word):4個(gè)字節(jié)構(gòu)成,對(duì)應(yīng)32位二進(jìn)制數(shù),數(shù)值范圍0~4294967295(0x00000000~0xFFFFFFFF)。半字(halfword):2個(gè)字節(jié)構(gòu)成,對(duì)應(yīng)16位二進(jìn)制數(shù),數(shù)值范圍0~65535(0x0000~0xFFFF)。1.2.1十進(jìn)制數(shù)轉(zhuǎn)換為R進(jìn)制計(jì)算機(jī)里二進(jìn)制的數(shù)據(jù)有以下幾種長度:位(bit):一個(gè)二進(jìn)制數(shù)就是一個(gè)位,稱為比特,數(shù)值范圍0、1。字節(jié)(byte):8位二進(jìn)制數(shù)構(gòu)成,數(shù)值范圍0~255或0x00~0xFF。字(word):4個(gè)字節(jié)構(gòu)成,對(duì)應(yīng)32位二進(jìn)制數(shù),數(shù)值范圍0~4294967295(0x00000000~0xFFFFFFFF)。半字(halfword):2個(gè)字節(jié)構(gòu)成,對(duì)應(yīng)16位二進(jìn)制數(shù),數(shù)值范圍0~65535(0x0000~0xFFFF)。1.2.1十進(jìn)制數(shù)轉(zhuǎn)換為R進(jìn)制采用模運(yùn)算方法,取余數(shù)的逆序。所謂模運(yùn)算就是兩個(gè)整數(shù)相除,得到的余數(shù)就是模運(yùn)算結(jié)果。例1和例2用短除法開展除法運(yùn)算,每個(gè)短除號(hào)的里面是被除數(shù),左邊是除數(shù),下面是商,右邊是余數(shù),當(dāng)商為0時(shí)運(yùn)算結(jié)束,轉(zhuǎn)換結(jié)果是余數(shù)的逆序。例1:(1688)10=(011010011000)2開展模2運(yùn)算例2:(1688)10=(698)16開展模16運(yùn)算0166161051616888961.2.2R進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制采用加權(quán)求和運(yùn)算方法,按照位值展開求和,最左邊的是最低有效位用LSB表示;最右邊的是最高有效位用MSB表示。例1:(011010011000)2=(1688)10首先把二進(jìn)制按照“位值”展開:MSB
LSB權(quán)重21121029282726252423222120位值0110100110001.2.2R進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制其次對(duì)不為0的位求和:1×23+1×24+1×27+1×29+1×210=1688例2:(698)16=(1688)10首先把二進(jìn)制按照“位值”展開:MSB
LSB權(quán)重162161160位值698其次對(duì)不為0的位求和:8×160+9×161+6×162=16881.2.3有符號(hào)數(shù)二進(jìn)制數(shù)分“無符號(hào)數(shù)”和“有符號(hào)數(shù)”?!盁o符號(hào)數(shù)”都是正數(shù),沒有符號(hào)位;“有符號(hào)數(shù)”有正數(shù)也有負(fù)數(shù),最高位是符號(hào)位:0——正數(shù);1——負(fù)數(shù)。在編寫程序時(shí),如果數(shù)據(jù)是事務(wù)狀態(tài)的抽象,如天氣、鍵盤符號(hào)等,就用“無符號(hào)數(shù)”;如果數(shù)據(jù)是參與計(jì)算的數(shù)值,如溫度,就使用“有符號(hào)數(shù)”。表1.2-1是1個(gè)字節(jié)的有符號(hào)數(shù),數(shù)值范圍從-128~127,而不是0~255。表1.2-1有符號(hào)數(shù)(1個(gè)字節(jié))二進(jìn)制16進(jìn)制十進(jìn)制000000000x000000000010x011………011111110x7f127100000000x80–128100000010x81–127100000100x82–126…。。。。。。111111110xff-11.2.3有符號(hào)數(shù)計(jì)算機(jī)中有符號(hào)數(shù)用補(bǔ)碼表示。1.原碼計(jì)算機(jī)中數(shù)的原碼由符號(hào)位和數(shù)值部分組成。最高位是符號(hào)位,0代表正數(shù),1代表負(fù)數(shù),其余位是數(shù)值位,數(shù)值部分與數(shù)的二進(jìn)制表示一致。原碼表示法舉例:(00000000)2=(0)10;(01111111)2=(127)10;(10000001)2=(-1)10;(11111111)2=(-127)101.2.3有符號(hào)數(shù)2.反碼反碼是原碼和補(bǔ)碼之間的過渡碼,正數(shù)的反碼和原碼相同;負(fù)數(shù)的反碼,其符號(hào)位和原碼相同,數(shù)值位按原碼取反。反碼表示法舉例:(00000000)2=(0)10;(01111111)2=(127)10;(11111110)2=(-1)10;(11111111)2=(-0)10;0無所謂正負(fù),綜上,“0”在反碼中有兩個(gè)表達(dá)方式。1.2.3有符號(hào)數(shù)3.補(bǔ)碼為了避免反碼中“0”的不唯一,補(bǔ)碼規(guī)定:正數(shù)的補(bǔ)碼和原碼相同;負(fù)數(shù)的補(bǔ)碼,其符號(hào)位和原碼相同,數(shù)值位在反碼上加1。補(bǔ)碼表示法舉例:(00000000)2=(0)10;(01111111)2=(127)10;(11111110)2=(-2)10;(11111111)2=(-1)10;1.2.3有符號(hào)數(shù)3.補(bǔ)碼為了避免反碼中“0”的不唯一,補(bǔ)碼規(guī)定:正數(shù)的補(bǔ)碼和原碼相同;負(fù)數(shù)的補(bǔ)碼,其符號(hào)位和原碼相同,數(shù)值位在反碼上加1。補(bǔ)碼表示法舉例:(00000000)2=(0)10;(01111111)2=(127)10;(11111110)2=(-2)10;(11111111)2=(-1)10;1.2.4小知識(shí):電腦計(jì)算器使用電腦自帶的“計(jì)算器”小程序可以實(shí)現(xiàn)進(jìn)制轉(zhuǎn)換。打開電腦里的計(jì)算器,在“查看”下拉菜單里選擇“程序員”模式,選擇進(jìn)制。圖1.2-1設(shè)置電腦“計(jì)算器”程序員模式;圖1.2-2輸入二進(jìn)制數(shù)10100,點(diǎn)擊其他進(jìn)制,就實(shí)現(xiàn)了進(jìn)制轉(zhuǎn)換。圖1.2-1計(jì)算器里的“程序員”模式圖1.2-2在計(jì)算器里進(jìn)行數(shù)制轉(zhuǎn)換1.3單片機(jī)程序中的數(shù)據(jù)類型C語言是一門面向過程的、抽象化的通用計(jì)算機(jī)編程語言,它可讀性好,易于調(diào)試、修改和移植,C語言兼顧了高級(jí)語言和匯編語言的優(yōu)點(diǎn),編譯效率高,各種計(jì)算機(jī)平臺(tái)包括嵌入式處理器、超級(jí)計(jì)算機(jī)等都支持C語言的編譯,是計(jì)算機(jī)產(chǎn)業(yè)最重要的編程語言,在編程語言中的具有舉足輕重的地位。C語言的特點(diǎn):1.具有結(jié)構(gòu)化的控制語句C語言是一種結(jié)構(gòu)化的語言,它有專門的流程控制語句。如順序結(jié)構(gòu)語句、if...else和switch等選擇分支語句、for,while等循環(huán)語句,這些可以實(shí)現(xiàn)程序流程的邏輯控制。C語言的主體是函數(shù),一個(gè)C語言程序就是由若干頭文件和函數(shù)組成,但是主函數(shù)只有一個(gè),其他函數(shù)都可以被主函數(shù)調(diào)用,可以以函數(shù)為單位實(shí)現(xiàn)模塊化的程序搭建。1.3單片機(jī)程序中的數(shù)據(jù)類型2.豐富的數(shù)據(jù)類型C語言包含的數(shù)據(jù)類型廣泛,除了傳統(tǒng)的字符型、整型、浮點(diǎn)型、數(shù)組等數(shù)據(jù)類型,還有指針類型,可以對(duì)硬件內(nèi)存地址直接進(jìn)行讀寫。3.豐富的運(yùn)算符C語言包含34個(gè)運(yùn)算符,賦值、括號(hào)、分號(hào)都是運(yùn)算符,算術(shù)運(yùn)算、邏輯運(yùn)算都有對(duì)應(yīng)的運(yùn)算符,這些使得C語言的表達(dá)式類型和運(yùn)算符類型非常豐富。面向單片機(jī)編程的C語言稱為單片機(jī)C語言,簡稱C51,C51符合ANSI-C標(biāo)準(zhǔn),且有一定的擴(kuò)充,其擴(kuò)充部分與單片機(jī)硬件特性有關(guān)。1.3.1數(shù)據(jù)類型計(jì)算機(jī)程序由數(shù)據(jù)和算法構(gòu)成,所謂數(shù)據(jù)是指具有一定格式的數(shù)字或數(shù)值。數(shù)據(jù)是計(jì)算機(jī)操作的對(duì)象,不管使用任何語言、何種算法進(jìn)行程序設(shè)計(jì),最終在計(jì)算機(jī)中運(yùn)行的只有數(shù)據(jù)流。數(shù)據(jù)的不同格式叫做數(shù)據(jù)類型。數(shù)據(jù)按一定的數(shù)據(jù)類型進(jìn)行的排列、組合及架構(gòu)稱為數(shù)據(jù)結(jié)構(gòu)。C語言有三種數(shù)據(jù)類型:基本型,包括整型(char、int)、實(shí)型(float)兩種;構(gòu)造型,包括數(shù)組、結(jié)構(gòu)體等用戶自定義結(jié)構(gòu)的數(shù)據(jù)類型;指針型,指向存儲(chǔ)單元地址的數(shù)據(jù)類型。相比普通C語言,C51多出了位、特殊功能寄存器兩種數(shù)據(jù)類型,這兩種數(shù)據(jù)類型都和硬件有關(guān),完整的數(shù)據(jù)類型見表1.3-1,表中深色底的是C51擴(kuò)充數(shù)據(jù)類型,C51編譯器自動(dòng)識(shí)別這些擴(kuò)充數(shù)據(jù)類型。1.3.1數(shù)據(jù)類型數(shù)據(jù)類型名稱長度數(shù)值范圍unsignedchar無符號(hào)字符型1字節(jié)0~255signedchar有符號(hào)字符型1字節(jié)-128~+127unsignedint無符號(hào)整型2字節(jié)0~65535signedint有符號(hào)整型2字節(jié)-32768~+32767unsignedlong無符號(hào)長整型4字節(jié)0~4294967295signedlong有符號(hào)長整型4字節(jié)-2147483648~+2147483647float浮點(diǎn)型4字節(jié)±1.175494E-38~±3.402823E+38*指針型1~3字節(jié)對(duì)象的地址bit位型1位0或1sfr特殊功能寄存器型1字節(jié)0~255sfr1616位特殊功能寄存器型2字節(jié)0~65535sbit特殊功能寄存器里的位1位0或1表1.3-1C51數(shù)據(jù)類型1.3.1數(shù)據(jù)類型數(shù)據(jù)類型規(guī)定了數(shù)據(jù)的格式和存儲(chǔ)空間大小。1.字符型(char)字符型有signedchar和unsignedchar之分,默認(rèn)signedchar,char型數(shù)據(jù)占用1個(gè)字節(jié)的存儲(chǔ)空間。unsignedchar是無符號(hào)的整型數(shù)據(jù),表示的數(shù)值范圍為0~255,用來存放西文字符、或者某種狀態(tài)值,如天氣;signedchar是有符號(hào)整型數(shù)據(jù),最高位是符號(hào)位,0表示正數(shù),1表示負(fù)數(shù),負(fù)數(shù)用補(bǔ)碼表示,數(shù)值范圍為-128~127。2.整型(int)整型有signedint和unsignedint之分,默認(rèn)signedint,Int型數(shù)據(jù)占用2個(gè)字節(jié)的存儲(chǔ)空間,用于存放雙字節(jié)數(shù)據(jù)。Unsignedint是兩字節(jié)的無符號(hào)數(shù),數(shù)值范圍0~65535,用來存放循環(huán)變量等,當(dāng)循環(huán)次數(shù)超過256次,那么就要定義它為unsignedint類型;signedint是兩字節(jié)的有符號(hào)數(shù),負(fù)數(shù)用補(bǔ)碼表示,數(shù)值范圍-32768~32767。1.3.1數(shù)據(jù)類型3.長整型(long)長整型有signedlong和unsignedlong之分,默認(rèn)signedlong,long型數(shù)據(jù)占用4個(gè)字節(jié)的存儲(chǔ)空間,用于存放四字節(jié)數(shù)據(jù)。Unsignedlong是四字節(jié)的無符號(hào)數(shù),數(shù)值范圍0~4294967295;signedlong是四字節(jié)的有符號(hào)數(shù),負(fù)數(shù)用補(bǔ)碼表示,數(shù)值范圍-2147483648~2147483647。4.浮點(diǎn)型(float)浮點(diǎn)型數(shù)據(jù)是帶小數(shù)點(diǎn)的數(shù),占用4個(gè)字節(jié)的存儲(chǔ)空間,數(shù)值以科學(xué)記數(shù)法標(biāo)記,浮點(diǎn)數(shù)不能進(jìn)行位操作或者邏輯運(yùn)算。1.3.1數(shù)據(jù)類型5.指針型指針型數(shù)據(jù)是整型數(shù)據(jù),保存指向另一個(gè)數(shù)據(jù)的存儲(chǔ)單元地址。6.位型位型數(shù)據(jù)是C51擴(kuò)充數(shù)據(jù)類型,只占用字節(jié)中的1個(gè)位,分為bit和sbit兩種類型。bit是RAM中20H~27H中的可尋址位;sbit是特殊功能寄存器中的可尋址位。7.特殊功能寄存器特殊功能寄存器(SpecialFunctionRegister)是C51擴(kuò)充數(shù)據(jù)類型,分為sfr和sfr16兩種類型。sfr在單片機(jī)RAM中占用一個(gè)存儲(chǔ)單元,且位置固定。sfr16在單片機(jī)RAM中占用兩個(gè)存儲(chǔ)單元,且位置固定。1.3.2數(shù)據(jù)的運(yùn)C語言提供了豐富的運(yùn)算符,運(yùn)算功能強(qiáng)大,在單片機(jī)C語言中,位運(yùn)算功能強(qiáng)大,常常與硬件相關(guān),C51中的運(yùn)算符總結(jié)如下。1.算術(shù)運(yùn)算符:進(jìn)行加減乘除運(yùn)算,運(yùn)算符號(hào)連接兩個(gè)操作數(shù),如表1.3-2所示。運(yùn)算名稱運(yùn)算符功能加法+求兩個(gè)數(shù)的和,1+1=2減法-求兩個(gè)數(shù)的差,10-8=2乘法*求兩個(gè)數(shù)的積,25*4=200除法/求除法運(yùn)算的商,25/4=6模運(yùn)算%求除法運(yùn)算的余,25%4=1表1.3-2算術(shù)運(yùn)算符1.3.2數(shù)據(jù)的運(yùn)2.賦值運(yùn)算符:賦值運(yùn)算符“=”的作用是給變量賦值。書寫格式:變量=表達(dá)式;//必須以分號(hào)結(jié)尾,表示一個(gè)賦值語句結(jié)束。舉例:unsignedchara=10,b;//變量a的初值是10unsignedintc;b=a+9; //變量b的值是19c=a+b; //變量c的值是29,運(yùn)算結(jié)果是無符號(hào)int類型。由此可見,賦值語句將右邊的表達(dá)式結(jié)果賦值給左邊。如果“=”兩邊的數(shù)據(jù)類型不一致,編譯器自動(dòng)進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換后保持左邊的數(shù)據(jù)類型。1.3.2數(shù)據(jù)的運(yùn)3.關(guān)系運(yùn)算符:表示兩個(gè)數(shù)據(jù)對(duì)象的大小關(guān)系,運(yùn)算結(jié)果是邏輯真(1)或邏輯假(0),關(guān)系運(yùn)算符如表1.3-3所示。運(yùn)算名稱運(yùn)算符功能大于>左邊和右邊的關(guān)系是否成立,如果成立,運(yùn)算結(jié)果是邏輯真(1);如果不成立,運(yùn)算結(jié)果是邏輯假(0)。大于等于>=小于<小于等于<=等于==不等于!=表1.3-3關(guān)系運(yùn)算符舉例:unsignedchara=10,b=9;//變量a的初值是10,b的初值是9b+2>a; //成立,表達(dá)式的值為1a==b; //不成立,表達(dá)式的值為0。1.3.2數(shù)據(jù)的運(yùn)4.邏輯運(yùn)算符:是與、或、非運(yùn)算的統(tǒng)稱,運(yùn)算結(jié)果是邏輯真或邏輯假,邏輯真通常用“1”表示,邏輯假通常用“0”表示。邏輯運(yùn)算符如表1.3-4所示。運(yùn)算名稱運(yùn)算符運(yùn)算規(guī)則與&&True&&True=TrueTrue&&False=FalseFalse&&False=False或||True||True=TrueTrue||False=TrueFalse||False=False非!!True=False!False=True表1.3-4邏輯運(yùn)算符1.3.2數(shù)據(jù)的運(yùn)(1)邏輯與(and)“&&”,雙目運(yùn)算符,運(yùn)算符兩側(cè)數(shù)據(jù)要么真(非0的數(shù)都是真),要么假(等于0的數(shù)都是假),只有兩個(gè)都為真的數(shù),運(yùn)算結(jié)果才為真。舉例:unsignedchara=10,b=9,c=0;//變量a的初值是10,b的初值是9,c的初值是0。a&&b; //運(yùn)算結(jié)果為真(1),a和b都非0a&&c; //運(yùn)算結(jié)果為假(0),c的值為0a-b&&c-b; //運(yùn)算結(jié)果為真(1),符號(hào)兩邊都非01.3.2數(shù)據(jù)的運(yùn)(2)邏輯或(or)“||”,雙目運(yùn)算符,運(yùn)算符兩側(cè)數(shù)據(jù)要么真(非0的數(shù)都是真),要么假(等于0的數(shù)都是假),只要有1個(gè)為真,運(yùn)算結(jié)果就為真,只有兩個(gè)都為假的數(shù),運(yùn)算結(jié)果才為假。舉例:unsignedchara=10,b=9,c=0;//變量a的初值是10,b的初值是9,c的初值是0a||b; //運(yùn)算結(jié)果為真(1),a和b是真a==b||c; //運(yùn)算結(jié)果為假(0),符號(hào)兩邊的值都為假a>b||c>b; //運(yùn)算結(jié)果為真(1),a>b是真,c>b是假,有一個(gè)是真。(3)邏輯非(not)“!”,單目運(yùn)算符,運(yùn)算結(jié)果要么真(1)要么假(0)。舉例:unsignedchara=10,b=9,c=0;//變量a的初值是10,b的初值是9,c的初值是0!(a+b); //運(yùn)算結(jié)果為假(0),a和b相加后非0,取非后是0!(a==b); //運(yùn)算結(jié)果為真(1),a和b不相等,取非后是真1.3.2數(shù)據(jù)的運(yùn)5.位運(yùn)算符:C51位運(yùn)算和單片機(jī)管腳密切相關(guān),運(yùn)算時(shí),要把十進(jìn)制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度出差安全教育與安全保障合作協(xié)議4篇
- 二零二五年度出境游領(lǐng)隊(duì)導(dǎo)游服務(wù)合同4篇
- 二零二五版夾板行業(yè)供應(yīng)鏈管理合作協(xié)議4篇
- 2025年度木托盤租賃與冷鏈物流解決方案合同4篇
- 2025年度個(gè)人數(shù)字貨幣交易投資管理合同3篇
- 2025年度智能交通系統(tǒng)施工合同范本8篇
- 2025版學(xué)校熱水供應(yīng)與水暖設(shè)施維修保養(yǎng)合同3篇
- 2025版學(xué)生試讀入學(xué)協(xié)議書范本6篇
- 二零二五年度危險(xiǎn)品運(yùn)輸司機(jī)安全責(zé)任合同
- 2025版不良資產(chǎn)債務(wù)重組與清收專業(yè)服務(wù)協(xié)議3篇
- 2025貴州貴陽市屬事業(yè)單位招聘筆試和高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年住院醫(yī)師規(guī)范化培訓(xùn)師資培訓(xùn)理論考試試題
- 期末綜合測試卷(試題)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)人教版
- 2024年廣東省公務(wù)員錄用考試《行測》試題及答案解析
- 《幼兒園健康》課件精1
- 汽車、電動(dòng)車電池火災(zāi)應(yīng)對(duì)
- 中醫(yī)藥適宜培訓(xùn)-刮痧療法教學(xué)課件
- 免疫組化he染色fishish
- 新東方四級(jí)詞匯-正序版
- 借名購車位協(xié)議書借名購車位協(xié)議書模板(五篇)
- 同步輪尺寸參數(shù)表詳表參考范本
評(píng)論
0/150
提交評(píng)論