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