您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!
重要程度:★★★★
在C語(yǔ)言中,有三種基本的數(shù)據(jù)類(lèi)型,它們是整型、實(shí)型和字符型。
1、數(shù)制轉(zhuǎn)換
二進(jìn)制的數(shù),基為二,某位出現(xiàn)的最大數(shù)字是2-1=1;
八進(jìn)制的數(shù),基為八,某位出現(xiàn)的最大數(shù)字是8-1=7;
十六進(jìn)制的數(shù),基為十六,某位出現(xiàn)的最大數(shù)字是f(相當(dāng)與十進(jìn)制的15)。在十六進(jìn)制中,數(shù)字由十六個(gè)代碼組成,分別是0~9和A~F(或者是a~f)這十六個(gè)代碼。
表1列舉出十進(jìn)制數(shù)字從0~15時(shí),相應(yīng)的二進(jìn)制、八進(jìn)制和十六進(jìn)制數(shù)字。(同列的為一組,表示相同的值)
表1 十進(jìn)制、二進(jìn)制、八進(jìn)制和十六進(jìn)制對(duì)照表
十進(jìn)制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
二進(jìn)制 |
0 |
1 |
10 |
11 |
100 |
101 |
110 |
111 |
八進(jìn)制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
十六進(jìn)制 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
||||||||
十進(jìn)制 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
二進(jìn)制 |
1000 |
1001 |
1010 |
1011 |
1100 |
1101 |
1110 |
1111 |
八進(jìn)制 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
十六進(jìn)制 |
8 |
9 |
A |
B |
C |
D |
E |
F |
十進(jìn)制的數(shù)字在我們?nèi)粘I钪衅毡槭褂茫欢谟?jì)算機(jī)內(nèi)部,數(shù)字均以二進(jìn)制形式表示和存放。引例:
(1)將任意進(jìn)制的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù):
將這個(gè)數(shù)按照引例中的方法展開(kāi)。注意底數(shù)使用的是該進(jìn)制的基。
使用以上的方法,我們?cè)賮?lái)看兩個(gè)例子:
(23E)16 = 2×162 + 3×161 + 14×160 =(574)10
(111)2 = 1×22+1×21+1×20 = 23-1 = (7)10
(2)將十進(jìn)制數(shù)轉(zhuǎn)換成任意進(jìn)制數(shù)
十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的規(guī)則為:將十進(jìn)制的數(shù)字除以2,得到的商數(shù)繼續(xù)除以2,直到商為0,然后將各次相除所得的余數(shù)從后往前排列,就得到該十進(jìn)制數(shù)轉(zhuǎn)換成的對(duì)應(yīng)的二進(jìn)制數(shù)。例如,將十進(jìn)制數(shù)13轉(zhuǎn)換成二進(jìn)制數(shù)的過(guò)程如下:
2 | 1 3
2 | 6 …………1
2 | 3 …………0
2 | 1 …………1
0 …………1
所得的余數(shù)從后往前排列,得到二進(jìn)制數(shù)1101,與表1中的一致。
同理,可以得出將十進(jìn)制數(shù)轉(zhuǎn)換為任意進(jìn)制數(shù)的規(guī)則。例如,將十進(jìn)制數(shù)13轉(zhuǎn)換成八進(jìn)制數(shù)的過(guò)程如下:
8 | 1 3
8 | 1 …………5
0 …………1
所得的余數(shù)從后往前排列,得到二進(jìn)制數(shù)15,與表1中的一致。
(3)二進(jìn)制與八進(jìn)制、十六進(jìn)制之間的轉(zhuǎn)換
從表1中可以看出,每個(gè)八進(jìn)制數(shù)的單個(gè)數(shù)字都可以用三位二進(jìn)制數(shù)來(lái)表示,最大的八進(jìn)制單個(gè)數(shù)字7等于最大的三位二進(jìn)制111,最小的八進(jìn)制單個(gè)數(shù)字0等于最小的三位二進(jìn)制000。因此,每個(gè)八進(jìn)制數(shù)的單個(gè)數(shù)字都可以用三位二進(jìn)制數(shù)字來(lái)表示,即23=8。同樣,每個(gè)十六進(jìn)制數(shù)的單個(gè)數(shù)字都可以用四位二進(jìn)制數(shù)來(lái)表示,即24=16。
例如,將八進(jìn)制數(shù)13轉(zhuǎn)換成二進(jìn)制數(shù)的過(guò)程如下:
(1 3)8 = (001 011)2
從以上的轉(zhuǎn)換過(guò)程看出,將每個(gè)八進(jìn)制數(shù)字轉(zhuǎn)換成了三位二進(jìn)制數(shù)字,1轉(zhuǎn)換成001,3轉(zhuǎn)換成011,因此八進(jìn)制13對(duì)應(yīng)的二進(jìn)制數(shù)字為1011。
現(xiàn)舉例說(shuō)明將十六進(jìn)制數(shù)數(shù)E3轉(zhuǎn)換成二進(jìn)制數(shù)的過(guò)程:
(E 3)16 = (1110 0011)2
從表1可以看出,十六進(jìn)制數(shù)字E等于二進(jìn)制的1110,3等于二進(jìn)制的0011,于是十六進(jìn)制數(shù)字E3等于二進(jìn)制數(shù)字11100011。
反過(guò)來(lái),將二進(jìn)制轉(zhuǎn)換成八進(jìn)制、十六進(jìn)制,只需將從右邊起的每三位或者每四位二進(jìn)制數(shù)轉(zhuǎn)換成對(duì)應(yīng)的八進(jìn)制數(shù)或十六進(jìn)制數(shù)。
進(jìn)制的常見(jiàn)錯(cuò)誤:
1. 八進(jìn)制數(shù)據(jù)中出現(xiàn)8,甚至是9.
2. 十六進(jìn)制中,把15當(dāng)成一個(gè)字符(實(shí)際上應(yīng)該是f)。
2、整型常量
(1)十進(jìn)制整型常量由一串連續(xù)的0~9數(shù)字組成。如:0、120、365、-12等。
(2)八進(jìn)制整型常量以數(shù)字0開(kāi)頭,其中的數(shù)字為0~7。如:0112(十進(jìn)制74)、0123(十進(jìn)制83)、077(十進(jìn)制63)等。
(3)十六進(jìn)制整型常量以0x(數(shù)字0和字母x)或0X開(kāi)頭,其中的數(shù)字可以是0~9、a~f或A~F中的數(shù)字或英文字母。如:0x11(十進(jìn)制17)、0xa5(十進(jìn)制165)、0X5a(十進(jìn)制90)等。
整型常量又分為短整型(short int)、基本整型(int)、長(zhǎng)整型(long int)和無(wú)符號(hào)整型(unsigned)等幾類(lèi)。
例1: 以下選項(xiàng)中可作為C語(yǔ)言合法整數(shù)的是
A) 10110B B) 0386 C) 0Xffa D) x2a2
分析:本題答案為C。
選項(xiàng)(A)不是C語(yǔ)言中三種整型常量之一。
選項(xiàng)(B)不是合法的八進(jìn)制整型常量,因?yàn)榘诉M(jìn)制整型常量中不可能出現(xiàn)“8”字符。
選項(xiàng)(D)中x2a2前加上“0”就是一個(gè)合法的十六進(jìn)制整型常量。
3、整型變量
整型變量是用于存放整型值的變量。對(duì)應(yīng)于整型常量,整型變量也可分為短整型(short int)、基本整型(int)、長(zhǎng)整型(long int)和無(wú)符號(hào)整型(unsigned)四種。
定義基本整型變量用關(guān)鍵字int,形式如下:
int i;
int類(lèi)型所占據(jù)的字節(jié)長(zhǎng)度因不同類(lèi)型的機(jī)器或編譯器而有所不同:
如果使用VC++6.0,則會(huì)為int型變量分配4個(gè)字節(jié)長(zhǎng)度的存儲(chǔ)單元。我們使用的將是這種情況。
如圖1所示。圖中表示對(duì)定義的int型整型變量i分配了四個(gè)字節(jié)的存儲(chǔ)單元,這個(gè)存儲(chǔ)單元的名字為i,里面的內(nèi)容不確定。
|
|
|
|
圖1 計(jì)算機(jī)系統(tǒng)為整型變量i分配的內(nèi)存空間
當(dāng)對(duì)變量i賦值時(shí),這個(gè)值就存儲(chǔ)在這個(gè)存儲(chǔ)單元中。
例如,執(zhí)行了賦值語(yǔ)句:
i=6;
則變量i的存儲(chǔ)單元變?yōu)槿鐖D2所示的情況。
00000000 |
00000000 |
00000000 |
00000110 |
圖2 十進(jìn)制整數(shù)6存放在變量i的內(nèi)存空間中的形式
正如讀者所知,在計(jì)算機(jī)中實(shí)際上是以二進(jìn)制形式存儲(chǔ)數(shù)據(jù)的,所以在變量i的存儲(chǔ)單元中存放的是四個(gè)字節(jié)的二進(jìn)制數(shù)00000000 00000000 00000000 00000110(十進(jìn)制6)。
C語(yǔ)言中規(guī)定,在定義變量的同時(shí)給變量賦初值,稱(chēng)為變量初始化。例如:
main( )
{ int a=2,b=3,c=4;
……
}
表2 不同類(lèi)型的整型數(shù)在內(nèi)存中所占用的字節(jié)數(shù)和數(shù)值范圍
數(shù)據(jù)類(lèi)型 |
關(guān)鍵字 |
占用的字節(jié)數(shù) |
數(shù)值范圍 |
短整型 |
[signed] short [int] |
2 |
-32768~32767 |
無(wú)符號(hào)短整型 |
unsigned short [int] |
2 |
0~65535 |
基本整型 |
[signed] int |
4 |
-2147483648~2147483647 |
無(wú)符號(hào)整型 |
unsigned [int] |
4 |
0~4294967295 |
長(zhǎng)整型 |
[signed] long [int] |
4 |
-2147483648~2147483647 |
無(wú)符號(hào)長(zhǎng)整型 |
unsigned long [int] |
4 |
0~4294967295 |
說(shuō)明:
1) 如果要表示一個(gè)長(zhǎng)整型常量,則應(yīng)該在對(duì)應(yīng)的整型常量后面加上一個(gè)字母后綴l(L的小寫(xiě))或者是L。如0L、110L、123L等。這是因?yàn)槿绻患由螸(或l),則表明這個(gè)整型常量為基本整型常量,在內(nèi)存中占兩個(gè)字節(jié)的存儲(chǔ)單元,而加上之后,則表明為長(zhǎng)整型常量,在內(nèi)存中占四個(gè)字節(jié)存儲(chǔ)單元。
2)無(wú)論是短整型還是長(zhǎng)整型常量,C語(yǔ)言系統(tǒng)都默認(rèn)為是有符號(hào)整數(shù)。無(wú)符號(hào)整數(shù)在數(shù)字的后面加上一個(gè)字母后綴u或者是U。若是長(zhǎng)整型無(wú)符號(hào)整型常量,則應(yīng)該加后綴lu或者是LU。
例2: 以下選項(xiàng)中不屬于C語(yǔ)言的類(lèi)型的是
A) signed short int B) unsigned long int
C) unsigned int D) long short
分析:根據(jù)表2可知,正確答案為D。
4、整數(shù)在內(nèi)存中的存儲(chǔ)形式
在計(jì)算機(jī)內(nèi)存中最小存儲(chǔ)單位稱(chēng)為“位(bit)”。每一個(gè)位中或者存放0,或者存放1,因此稱(chēng)為二進(jìn)制位。一個(gè)字節(jié)(Byte)有8個(gè)二進(jìn)制位。沿用慣例,把最右邊一位稱(chēng)為最低位,把最左邊一位稱(chēng)為最高位。在C語(yǔ)言中,對(duì)于有符號(hào)型整數(shù),將最高位作為符號(hào)位,當(dāng)最高位為0時(shí)表示正整數(shù),當(dāng)最高位為1時(shí)表示負(fù)整數(shù)。
下面介紹整數(shù)的存儲(chǔ)形式。
注意:計(jì)算機(jī)中(或者說(shuō)內(nèi)存中)的數(shù)據(jù)都以它對(duì)應(yīng)的補(bǔ)碼形式存在。
掃碼關(guān)注我們
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08