版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第11章結(jié)構(gòu)類型數(shù)據(jù)描述11.1結(jié)構(gòu)體11.2共用體11.3枚舉類型11.4
用typedef定義類型名11.5
位段結(jié)構(gòu)第11章結(jié)構(gòu)類型數(shù)據(jù)描述11.1結(jié)構(gòu)體11.2共用體第11章結(jié)構(gòu)類型數(shù)據(jù)描述
這種多項(xiàng)組合又有內(nèi)在聯(lián)系的的數(shù)據(jù)稱為結(jié)構(gòu)體(structure)。它是可以由用戶自己定義的。11.1結(jié)構(gòu)體
在實(shí)際應(yīng)用中,有時(shí)需要將一些有相互聯(lián)系而類型不同的數(shù)據(jù)組合成一個(gè)有機(jī)的整體,以便于引用。如學(xué)生學(xué)籍檔案中的學(xué)號(hào)、姓名、性別、年齡、成績(jī)、地址等數(shù)據(jù),對(duì)每個(gè)學(xué)生來(lái)說(shuō),除了其各項(xiàng)的值不同外,但表示形式是一樣的。numnamesexagescoreAddr10010LiFunF1887.5Beijing1.概述第11章結(jié)構(gòu)類型數(shù)據(jù)描述這種多項(xiàng)組合又有內(nèi)數(shù)據(jù)類型數(shù)據(jù)類型基本類型構(gòu)造類型指針類型()空類型(void)字符型(char)數(shù)值類型枚舉類型(enum)數(shù)組類型([])結(jié)構(gòu)體類型(struct)共用體類型(union)整型(short,int,long,unsigbed)實(shí)型單精度型(float)雙精度型(double)數(shù)據(jù)類型數(shù)據(jù)類型基本類型構(gòu)造類型指針類型()空類型(voi2.結(jié)構(gòu)體類型變量的定義兩者缺一不可1)結(jié)構(gòu)體類型的定義形式struct結(jié)構(gòu)體名{分量表};其中“分量表”中的分量也應(yīng)進(jìn)行類型說(shuō)明,例如:
struct
student
{
intnum; charname[20]; charsex; intage; floatscore; charaddr[30]; };即:類型標(biāo)識(shí)符分量名;分量描述2.結(jié)構(gòu)體類型變量的定義兩者缺一不可1)結(jié)構(gòu)體類型的由用戶定義的“結(jié)構(gòu)體類型”,可以同標(biāo)準(zhǔn)類型一樣作為定義變量的類型。2)定義結(jié)構(gòu)體類型變量的方法先定義結(jié)構(gòu)體類型再定義變量定義了結(jié)構(gòu)體類型struct
student后,可以用它定義變量。注:不能寫(xiě)成structst1,st2;必須同時(shí)指定結(jié)構(gòu)體名。
為了方便起見(jiàn),可以在程序開(kāi)頭定義符號(hào)常量進(jìn)行簡(jiǎn)化。如:如:structstudentst1,st2;由用戶定義的“結(jié)構(gòu)體類型”,可以同標(biāo)準(zhǔn)類型一樣則在程序中可以直接寫(xiě)成:
STUDENT {
intnum; charname[20]; charsex; intage; floatscore; charaddr[30]; }; #defineSTUDENTstructstudentSTUDENTst1,st2;則在程序中可以直接寫(xiě)成:#defineSTUDENTst
在定義類型的同時(shí)定義變量如:structstudent {
intnum; charname[20]; charsex; intage; floatscore; charaddr[30]; }st1,st2;struct結(jié)構(gòu)體名{分量表;}變量表;則一般定義形式為:在定義類型的同時(shí)定義變量如:structstudent
直接定義結(jié)構(gòu)類型變量定義形式為:
struct
{
分量表;
}
變量表;
在struct后不出現(xiàn)結(jié)構(gòu)體名,因此也不能再以此定義相同的結(jié)構(gòu)體變量。3.關(guān)于結(jié)構(gòu)體類型的幾點(diǎn)說(shuō)明類型與變量是兩個(gè)不同的概念。一般先定義結(jié)構(gòu)體類型,再定義變量為該類型。變量可以賦值、存取或運(yùn)算,而類型沒(méi)有這些操作。在編譯時(shí),對(duì)變量分配空間,對(duì)類型來(lái)說(shuō)不存在分配空間。對(duì)結(jié)構(gòu)體中的分量可以單獨(dú)使用。直接定義結(jié)構(gòu)類型變量定義形式為:
struct
分量也可以是一個(gè)結(jié)構(gòu)體變量。如student中要增加birthday,則可按如下方式進(jìn)行定義:structdate{
intmonth;intday;intyear;};structstudent{…structdatebirthday;
…}st1,st2;先定義一個(gè)日期結(jié)構(gòu)該分量也是一個(gè)結(jié)構(gòu)體分量名可以與程序中的變量名相同,兩者之間不會(huì)產(chǎn)生混淆。分量也可以是一個(gè)結(jié)構(gòu)體變量。如student中要增加4.結(jié)構(gòu)體類型變量的引用引用結(jié)構(gòu)體變量應(yīng)遵守如下規(guī)則:1)結(jié)構(gòu)體變量中分量的引用方式結(jié)構(gòu)體變量名
分量名[
二級(jí)分量名]其中:“”為分量運(yùn)算符,在所有的運(yùn)算符中優(yōu)先級(jí)最高。2)結(jié)構(gòu)體變量的分量本身又屬于結(jié)構(gòu)體類型時(shí)只能對(duì)最低級(jí)分量進(jìn)行操作。如:st1.num;;st1.birthday.day;寫(xiě)成st1.birthday并不會(huì)訪問(wèn)st1中的birthday,只會(huì)引起警告錯(cuò)誤。4.結(jié)構(gòu)體類型變量的引用引用結(jié)構(gòu)體變量應(yīng)遵守如下規(guī)則:13)不能將一個(gè)結(jié)構(gòu)體變量直接進(jìn)行輸入輸出,只能對(duì)結(jié)構(gòu)體變量的各分量進(jìn)行輸入輸出。如:scanf(“%d,%s,%c,%d,%f,%s”,&st1);Xprintf(“%d,%s,%c,%d,%f,%s”,st1);Xprintf(“%s,%d”,,st1.birthday.day);√4)分量和結(jié)構(gòu)體變量的地址均可以被引用如:scanf(“%d”,&st1.num);輸入st1.num的值printf(“%x”,&st1);以十六進(jìn)制輸出st1的首地址3)不能將一個(gè)結(jié)構(gòu)體變量直接進(jìn)行輸入輸出,只能對(duì)結(jié)如:s5.結(jié)構(gòu)體變量的初始化1)外部存儲(chǔ)類的結(jié)構(gòu)體變量初始化例11.1structstudent{longintnum;charname[20];charsex;charaddr[30];}a={89031,“LiLin”,‘M’,“123BeijingRoad”};voidmain(){printf(“%ld,%s,%c,%s\n”,a.num,,a.sex,a.addr);}輸出結(jié)果:89031,LiLin,M,123BeijingRoad定義結(jié)構(gòu)體的同時(shí)定義變量a并進(jìn)行初始化。5.結(jié)構(gòu)體變量的初始化1)外部存儲(chǔ)類的結(jié)構(gòu)體變量初始2)靜態(tài)存儲(chǔ)類的結(jié)構(gòu)體變量初始化voidmain(){structstudent{longintnum;charname[20];charsex;charaddr[30];}a={89031,“LiLin”,‘M’,“123BeijingRoad”};printf(“%ld,%s,%c,%s\n”,a.num,,a.sex,a.addr);}可以將定義部分放在main函數(shù)中6.結(jié)構(gòu)體數(shù)組
結(jié)構(gòu)體數(shù)組與普通數(shù)組的不同之處在于每個(gè)數(shù)組元素都是一個(gè)結(jié)構(gòu)體類型的數(shù)據(jù),且這些數(shù)據(jù)又分別包括各個(gè)分量。結(jié)構(gòu)體數(shù)組的定義、初始化等操作和內(nèi)存中的存放方式與普通數(shù)組相類似。2)靜態(tài)存儲(chǔ)類的結(jié)構(gòu)體變量初始化voidmain()7指向結(jié)構(gòu)體類型數(shù)據(jù)的指針
同普通變量一樣,也可以定義一個(gè)指針變量指向一個(gè)結(jié)構(gòu)體變量,則此時(shí)該指針變量的值是結(jié)構(gòu)體變量的起始地址。指針變量也可以用來(lái)指向結(jié)構(gòu)體數(shù)組中的元素,同樣也可以用指向結(jié)構(gòu)體的指針作函數(shù)參數(shù)。7指向結(jié)構(gòu)體類型數(shù)據(jù)的指針同普通變量一樣,例11.11用指向結(jié)構(gòu)體的指針作函數(shù)參數(shù)#include“string.h”main(){structstudent{longintnum;charname[20];charsex;floatscore;};structstudentstu;
structstudent*p;
p=&stu;stu.num=89101;strcpy(,“LiLin”);stu.sex=‘M’;stu.score=89.5;printf(“No.:%d\nname:%s\nsex:%c\nscore:%f\n”, stu.num,,stu.sex,sru.score);printf(“\nNo.:%d\nname:%s\nsex:%c\nscore:%f\n”,
(*p).num,(*p).name,(*p).sex,(*p).score);}注意這里的引用格式,也可寫(xiě)成p–>num,…。若寫(xiě)成p.num,…或
*p.num,…則是錯(cuò)誤的例11.11用指向結(jié)構(gòu)體的指針作函數(shù)參數(shù)注意這里的引用格注意:(*p)表示p指向的結(jié)構(gòu)體變量,不得省去括號(hào)。而*p.num等價(jià)于*(p.num)。
稱為指向運(yùn)算符。(*p).num可寫(xiě)成p─>num,使之直觀,余類推。“–>”結(jié)構(gòu)體變量
分量名、(*p)
分量名、p–>分量名,三
者是等價(jià)的。p–>n得到p指向的結(jié)構(gòu)體變量中的分量n的值。
p–>n++得到p指向的結(jié)構(gòu)體變量中的分量n的值,
用完該值后加1。++p–>n得到p指向的結(jié)構(gòu)體變量中的分量n的值,
并在用該值前先加1。注意:(*p)表示p指向的結(jié)構(gòu)體變量,不得省去括8動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)靜態(tài)數(shù)據(jù)結(jié)構(gòu)(例如數(shù)組)占據(jù)內(nèi)存空間的位置和大小是在它們被說(shuō)明的同時(shí)由系統(tǒng)分配的,在程序運(yùn)行期間是不變的,因此可以有效地訪問(wèn)它們的任何一個(gè)元素。但要?jiǎng)h除和插入一個(gè)元素則比較困難,往往要引起大量的數(shù)據(jù)移動(dòng)。而且數(shù)據(jù)量的擴(kuò)充更受到它們所占用的有限內(nèi)存空間的限制。C中的動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)有效地解決了這一問(wèn)題動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)中最基本的形式是鏈表和二叉樹(shù),它們?cè)跀?shù)據(jù)處理中起著十分重要的作用。動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)中的每個(gè)組成數(shù)據(jù)在邏輯上是連續(xù)排列的,但在物理上即在內(nèi)存中存儲(chǔ)時(shí)并不占用連續(xù)的內(nèi)存空間,它們可以根據(jù)需要隨機(jī)地增加或減少其元素,相應(yīng)地占用或釋放內(nèi)存空間。8動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)靜態(tài)數(shù)據(jù)結(jié)構(gòu)(例如數(shù)組)1.動(dòng)態(tài)存儲(chǔ)分配C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)存儲(chǔ)分配的函數(shù):
malloc(size)在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)中分配一個(gè)結(jié)點(diǎn)長(zhǎng)度為size的連續(xù)存儲(chǔ)空間,并返回一個(gè)指向其起始地址的指針,若分配不成功,則返回值為0。size為整型。
calloc(n,size)在內(nèi)存的動(dòng)態(tài)存儲(chǔ)區(qū)中分配n個(gè)結(jié)點(diǎn)長(zhǎng)度為size的連續(xù)存儲(chǔ)空間,并返回一個(gè)指向其起始地址的指針,若分配不成功,則返回值為0。n、size為整型。
free(ptr)釋放由指針ptr所指向的存儲(chǔ)空間。ptr是最近一次調(diào)用malloc或calloc函數(shù)或鏈表指針?lè)祷氐闹怠tr為字符型指針。1.動(dòng)態(tài)存儲(chǔ)分配C語(yǔ)言實(shí)現(xiàn)動(dòng)態(tài)存儲(chǔ)分配的函數(shù):ma2.鏈表1)鏈表概念單向鏈表是按照輸入數(shù)據(jù)的順序建立的。它有一個(gè)“頭指針”(圖中為
head
),指向第一個(gè)元素;每一個(gè)元素稱為“結(jié)點(diǎn)”,每個(gè)結(jié)點(diǎn)包括兩個(gè)域:數(shù)據(jù)域和指向下一個(gè)結(jié)點(diǎn)的指針域;最后一個(gè)元素的指針域?yàn)椤癗ULL”(“空地址”),表示鏈表的結(jié)束,稱為“表尾”。headABBCENULL鏈表是一種常見(jiàn)的動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配的數(shù)據(jù)結(jié)構(gòu)。鏈表有“單向鏈表”、“雙向鏈表”、“循環(huán)鏈表”、“雙向循環(huán)鏈表”之分。下圖是一個(gè)“單向鏈表”的示例。2.鏈表1)鏈表概念單向鏈表是按照輸入2)建立鏈表例11.12鏈表的建立和遍歷(隊(duì)列)#defineNULL0#defineLENsizeof(structnode)structnode{intdata;structnode*next;}voidmain(){structnode*head,*rear,*p;intn=0;p=(structnode*)malloc(LEN);p–>data=n+1;head=rear=p;for(n=1;n<10;n++){p=(structnode*)malloc(LEN);p–>data=n+1;rear–>next=p;rear=p;}rear–>next=NULL;p=head;while(p!=NULL){printf(“%3d”,p–>data);p=p–>next;}}恢復(fù)指針head12345678910ppppppppp0rearprearrearrearrearrearrearrearrearrear2)建立鏈表例11.12鏈表的建立和遍歷(隊(duì)列)#d例11.13鏈表的建立和遍歷(棧)#defineNULL0#defineLENsizeof(structnode)structnode{intdata;structnode*next;};voidmain(){structnode*base,*p;intn;base=NULL;for(n=0;n<10;n+
+){p=(structnode*)malloc(LEN);p>data=n
+1;p>next=base;base=p;}p=base;while(p!
=NULL){printf(“%3d”,p>data);p=p>next;}}102345678910pbase輸出結(jié)果:10987654321恢復(fù)指針例11.13鏈表的建立和遍歷(棧)#defineNUL3)刪除鏈表元素例11.14刪除鏈表中指定的結(jié)點(diǎn)。structnode*delete(head,data)structnode*head;intdata;{
structnode*p1,*p2;if(head!=NULL){
p1=head;while(p1>data!=data&&p1>next!=NULL){p2=p1;p1=p1>next;}if(p1>data=
=data){
if(p1==head)head=p1>next;else{
p2>next=p1>next;printf(“deleted:%d\n”,data);n=n
1;}elseprintf(“%dnotbeenfound!\n”,data);}return(head);}p1p2p1p2p1p2p1p2p1123456789100prearhead3)刪除鏈表元素例11.14刪除鏈表中指定的結(jié)點(diǎn)。4)鏈表的插入操作例11.15在鏈表中插入一個(gè)新結(jié)點(diǎn)。structnode*insert(head,new)structnode*head,*new;{
structnode*p,*p1,*p2;p=new;p1=head;if(head==NULL){head=p;p>next=NULL;}else{while(p1>data!=p>data&&p1>next!=NULL){
p2=p1;p1=p1>next;}if(p1>next==NULL){p1>next=p;p>next=NULL;}else{p2>next=p;p>next=p1;}}n=n1;}12346789100prearp1p2p1p2p1p2p1p2p1p50newhead4)鏈表的插入操作例11.15在鏈表中插入一個(gè)新結(jié)點(diǎn)11.2共用體1.共用體的概念
二個(gè)以上不同類型的變量采用“覆蓋技術(shù)”占用同一段內(nèi)存單元的結(jié)構(gòu)稱為共用體。共用體類型變量的定義形式如下:union共用體名{分量表;}變量表;例如:uniondata{inti;charch;floatf;}a,b,c;uniondata{inti;charch;floatf;}uniondataa,b,c;union{inti;charch;floatf;}a,b,c;11.2共用體1.共用體的概念二個(gè)以上說(shuō)明:雖然“共用體”與“結(jié)構(gòu)體”的定義形式相似,但是:
一個(gè)結(jié)構(gòu)體變量所需的存儲(chǔ)容量為每個(gè)分量所需存儲(chǔ)容量之和,而一個(gè)共用體變量所需的存儲(chǔ)容量為各個(gè)分量中占用存儲(chǔ)容量最多的分量所需的存儲(chǔ)容量。一個(gè)結(jié)構(gòu)體變量的各個(gè)分量在任何時(shí)刻都同時(shí)存在,且可同時(shí)引用。而一個(gè)共用體變量的各個(gè)分量在同一時(shí)刻只存在其中一個(gè),也只能引用其中的一個(gè)分量。即起作用的只是最后一次存放的分量,在存入一個(gè)新的分量后,原有分量的值被覆蓋而失去作用。一個(gè)結(jié)構(gòu)體變量的各個(gè)分量的地址各不相同,分別擁有各自的存儲(chǔ)空間。而一個(gè)共用體變量的各個(gè)分量的地址相同,共同擁有同一存儲(chǔ)空間。共用體變量可作為參數(shù)傳遞給函數(shù),也可以作函數(shù)的返回值。同樣,可以使用地址傳送方式將共用體變量的地址作為參數(shù)或返回值在函數(shù)間傳遞。說(shuō)明:雖然“共用體”與“結(jié)構(gòu)體”的定義形式相似,但是:共用體類型可以出現(xiàn)在結(jié)構(gòu)體類型定義中,也可以定義共用體類型數(shù)組,數(shù)組也可以作為共用體的分量。同樣,結(jié)構(gòu)體類型也可以出現(xiàn)在共用體類型定義中。不能在定義共用體變量時(shí)對(duì)其初始化,也不能對(duì)共用體變量名賦值,更不能企圖引用共用體變量名去得到分量的值。2.共用體變量的引用
不能引用共用體變量,只能采用分量運(yùn)算符
“
”引用共用體變量的分量。與引用結(jié)構(gòu)體變量的方法是一致的。共用體類型可以出現(xiàn)在結(jié)構(gòu)體類型定義中,也可以定不能在
通常,在定義嵌套有共用體變量的結(jié)構(gòu)體變量時(shí),在其中附加一個(gè)類型標(biāo)志,以方便對(duì)共用體分量的操作。如:struct{union{inti;charch;floatf;doubled;}data;inttype;}a;
…switch(a.type){
case0: /*int*/printf(“%d\n”,a.data.i);break;case1:/*char*/printf(“%d\n”,a.data.ch);break;case2:/*float*/printf(“%d\n”,a.data.f);break;case3:/*double*/printf(“%d\n”,a.data.d);break;通常,在定義嵌套有共用體變量的結(jié)構(gòu)體變量時(shí),如11.3枚舉類型所謂“枚舉”是指變量的取值只限于所列舉出來(lái)的值的范圍內(nèi)。枚舉類型的定義以enum開(kāi)頭。如:enumweekday{sun,mon,tue,wed,thu,fri,sat};enumweekdayworkday,week_end;enumweekday{sun,mon,tue,wed,thu,fri,sat}workday;說(shuō)明:{}中的枚舉元素是常量而不是變量,也不代表什么實(shí)際的含義。枚舉型變量workday,week_end的取值只限于{}中列舉的元素范圍內(nèi)。{}中枚舉元素的值按其排列順序?yàn)?、1、2、…,可用于輸出。11.3枚舉類型所謂“枚舉”是指變量的取枚舉值可按其定義時(shí)的順序號(hào)用作判斷比較。不得直接將一個(gè)整數(shù)賦給一個(gè)枚舉變量。如: Workday=2;是不對(duì)的,因?yàn)樗鼈儾粚儆谕粩?shù)據(jù)類型。但可以進(jìn)行強(qiáng)制類型轉(zhuǎn)換賦值。如:
workday=(enumweekday)2;甚至可以是表達(dá)式,如:
workday=(enumweekday)(5-3);可用如下定義改變枚舉元素中的序號(hào)值:enumweekday{sun,mon,tue,wed,thu=7,fri,sat};則枚舉元素的序號(hào)值依次為: 0、1、2、3、7、8、9。枚舉值可按其定義時(shí)的順序號(hào)用作判斷比較。不得直接將一例11.2口袋中有若干個(gè)紅、黃、藍(lán)、白、黑五種顏色的球,試編程求出每次從口袋中取出三個(gè)不同顏色的球的可能取法,并輸出每種組合的三種顏色。例11.2口袋中有若干個(gè)紅、黃、藍(lán)、白、黑五種顏色main(){
enumcolor{red,yellow,blue,white,black};enumcolori,j,k,pri;intn,loop;n=0;for(i=red;i<=black;i++)for(j=red;j<=black;j++)if(i!=j){for(k=red;k<=black;k++)if((k!=i)&&(k!=j)){
n=n+1;printf(“%4d”,n);for(loop=1;loop<=3;loop++){switch(loop){
case1:pri=i;break;case2:pri=j;break;case3:pri=k;break;default:break;}switch(pri){
casered
:printf(“%10s”,“red”);
break;caseyellow
:printf(“%10s”,“yellow”);
break;caseblue:printf(“%10s”,“blue”);
break;casewhite:printf(“%10s”,“white”);break;caseblack:printf(“%10s”,“black”);break;default:break;}}printf(“\n”);}}printf(“\ntotal:%5d\n”,n);}main()default:br
使用關(guān)鍵字typedef說(shuō)明一個(gè)新的類型名,往往可以在程序中簡(jiǎn)化變量的類型定義。例如:typedefstructstudent{intnum;
}REC;RECx,y,*p;語(yǔ)句:p=(structstudent*)malloc(sizeof(structstudent));可以寫(xiě)成:p=(REC*)malloc(sizeof(REC))11.4用typedef定義類型名相當(dāng)于structstudentx,y,*p;使用關(guān)鍵字typedef說(shuō)明一個(gè)新的類型名,往說(shuō)明:用typedef不是也不能建立新的數(shù)據(jù)類型,也不能用來(lái)定義變量,只是以一個(gè)新的類型名(通常用大寫(xiě)字母表示)代替已存在的類型名,以此簡(jiǎn)化程序中變量的類型定義。
使用typedef有利于程序的通用性和可移植性。例如:程序中有:inta,b,c;
要修改為:longa,b,c;則可用typedef定義:
typedefintINTEGER;在程序中用INTEGER定義變量,當(dāng)修改程序時(shí)再用typedef定義即可:
typedeflongINTEGER;說(shuō)明:使用typedef有利于程序的通用性和可移植性。11.5位段結(jié)構(gòu)1.位運(yùn)算
C既具有高級(jí)語(yǔ)言的特點(diǎn),又具有低級(jí)語(yǔ)言的功能,位運(yùn)算能力就是其特色之一。所謂位運(yùn)算就是指進(jìn)行二進(jìn)制位的運(yùn)算。C提供的位運(yùn)算符有: 運(yùn)算符含義 & 按位與 | 按位或 按位異或 ~ 取反 << 左移 >> 右移11.5位段結(jié)構(gòu)1.位運(yùn)算C既具有高級(jí)說(shuō)明:位運(yùn)算符中除“~”外,其余均為二目運(yùn)算符,即要求兩側(cè)各有一個(gè)運(yùn)算量。運(yùn)算量只能是整型或字符型的數(shù)據(jù),不能為實(shí)型數(shù)據(jù)。1)“按位與”運(yùn)算符&參加運(yùn)算的兩個(gè)運(yùn)算量之對(duì)應(yīng)位都為1,則該位的結(jié)果為1,否則為0。例: 3&5=1 3的補(bǔ)碼: 00000011 5的補(bǔ)碼: 00000101& 00000001即: 0&0=00&1=01&0=01&1=1說(shuō)明:運(yùn)算量只能是整型或字符型的數(shù)據(jù),不能為實(shí)型數(shù)據(jù)。&運(yùn)算符的用途:清零如果想將一個(gè)單元清零(全部二進(jìn)位為),則只要找一個(gè)數(shù)的補(bǔ)碼的對(duì)應(yīng)位0與被清零數(shù)的對(duì)應(yīng)位1剛好對(duì)應(yīng),然后使兩者進(jìn)行&運(yùn)算。如: 00101011 & 1001010000000000取一個(gè)數(shù)中的某些指定位如: a: 0010110010101100 b: 0000000011111111(377)8&0000000010101100得到a的低8位&運(yùn)算符的用途:清零如: 0010101100000保留一個(gè)數(shù)的某一位如: 01010100(84)10& 00111011(59)1000010000(16)102)“按位或”運(yùn)算符|參加運(yùn)算的兩個(gè)運(yùn)算量之對(duì)應(yīng)位只要有一位為1,則該位的結(jié)果為1。即:0|0=00|1=11|0=1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人房產(chǎn)交易合同標(biāo)準(zhǔn)文本(2024版)版B版
- 紹興職業(yè)技術(shù)學(xué)院《電力系統(tǒng)繼電保護(hù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 調(diào)查方案集錦八篇
- 試用期簡(jiǎn)短工作總結(jié)2022年
- 2024高考地理一輪復(fù)習(xí)考點(diǎn)35環(huán)境保護(hù)練習(xí)含解析
- 2024高考地理二輪復(fù)習(xí)微專題五常見(jiàn)地貌類型學(xué)案
- 家屬參與下的殘疾兒童家庭教育模式研究
- 2024高考物理一輪復(fù)習(xí)第九章磁場(chǎng)第二節(jié)磁吃電荷的作用學(xué)案新人教版
- 遼寧師范高等??茖W(xué)校《藏醫(yī)內(nèi)科學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度餐飲企業(yè)節(jié)能環(huán)保改造合同6篇
- (新版)高級(jí)考評(píng)員職業(yè)技能鑒定考試題庫(kù)(含答案)
- 碳排放監(jiān)測(cè)員(高級(jí))技能鑒定考試題及答案
- 2024年中醫(yī)執(zhí)業(yè)醫(yī)師資格考試題庫(kù)及答案
- 柯橋區(qū)五年級(jí)上學(xué)期語(yǔ)文期末學(xué)業(yè)評(píng)價(jià)測(cè)試試卷
- 2022年廣東省中考物理試題試題(含答案+解析)
- 北京市豐臺(tái)區(qū)2024屆高三下學(xué)期二模試題 數(shù)學(xué) 含解析
- 質(zhì)量保證措施
- 耕地占補(bǔ)平衡系統(tǒng)課件
- 2024年三年級(jí)品社下冊(cè)《鄰居家的小伙伴》教案2 蘇教版
- 交易平臺(tái)保證金協(xié)議書(shū)
- 醫(yī)院OA辦公系統(tǒng)技術(shù)需求
評(píng)論
0/150
提交評(píng)論