秋霞电影网午夜鲁丝片无码,真人h视频免费观看视频,囯产av无码片毛片一级,免费夜色私人影院在线观看,亚洲美女综合香蕉片,亚洲aⅴ天堂av在线电影猫咪,日韩三级片网址入口

位運(yùn)算(人民郵電管銀枝主篇).ppt

上傳人:sh****n 文檔編號(hào):14256816 上傳時(shí)間:2020-07-14 格式:PPT 頁(yè)數(shù):38 大?。?16KB
收藏 版權(quán)申訴 舉報(bào) 下載
位運(yùn)算(人民郵電管銀枝主篇).ppt_第1頁(yè)
第1頁(yè) / 共38頁(yè)
位運(yùn)算(人民郵電管銀枝主篇).ppt_第2頁(yè)
第2頁(yè) / 共38頁(yè)
位運(yùn)算(人民郵電管銀枝主篇).ppt_第3頁(yè)
第3頁(yè) / 共38頁(yè)

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《位運(yùn)算(人民郵電管銀枝主篇).ppt》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《位運(yùn)算(人民郵電管銀枝主篇).ppt(38頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、第十一 位運(yùn)算,C語(yǔ)言既具有高級(jí)語(yǔ)言的特點(diǎn),也具有低級(jí)語(yǔ)言的特點(diǎn)。本節(jié)所講的位運(yùn)算就具有低級(jí)語(yǔ)言的特點(diǎn),并被廣泛用于對(duì)底層硬件、外圍設(shè)備的狀態(tài)檢測(cè)和控制。 計(jì)算機(jī)真正執(zhí)行的是由0和1信號(hào)組成的計(jì)算機(jī)指令,數(shù)據(jù)也是以二進(jìn)制形式表示的。因此最終要實(shí)現(xiàn)計(jì)算機(jī)的操作,就要對(duì)這些0和1進(jìn)行操作。每一個(gè)0和1的狀態(tài)稱(chēng)為一個(gè)“位”(bit)的狀態(tài)。有了位運(yùn)算,C語(yǔ)言就能編寫(xiě)出直接對(duì)計(jì)算機(jī)硬件進(jìn)行操作的程序。,本章主要內(nèi)容,11.1 位運(yùn)算及位運(yùn)算符概述 11.2 位運(yùn)算 11.3 位域 11.4 位運(yùn)算應(yīng)用舉例,11.1位運(yùn)算及位運(yùn)算符概述,11.1.1 位運(yùn)算概述 所謂位運(yùn)算是指對(duì)操作數(shù)以二進(jìn)制位(

2、bit)為單位進(jìn)行的數(shù)據(jù)處理。每一個(gè)二進(jìn)制位只能存放1位二進(jìn)制數(shù)“0”或“1”,因此位運(yùn)算符的運(yùn)算對(duì)象是一個(gè)二進(jìn)制數(shù)位的集合。 通常把組成一個(gè)數(shù)據(jù)的最右邊的二進(jìn)制位稱(chēng)作第0位,從右向左依次稱(chēng)為第1位,第2位,,最左邊一位稱(chēng)作最高位。,1112位運(yùn)算符位的種類(lèi),C語(yǔ)言中,位運(yùn)算包括邏輯位運(yùn)算和移位位運(yùn)算。 1、邏輯位運(yùn)算分為四種:位反、位與、位或、位異 2、移位位運(yùn)算分為二種:左移與右移。 在c語(yǔ)言中的移位不是循環(huán)移動(dòng),經(jīng)過(guò)移位后一端的位被“擠掉”,而另一端空出的位補(bǔ)0。,,3、位復(fù)合賦值運(yùn)算符 類(lèi)似于算術(shù)的復(fù)合運(yùn)算符,位運(yùn)算符和賦值運(yùn)算符也可以構(gòu)成復(fù)合賦值運(yùn)算符。,,4、關(guān)于位運(yùn)算符

3、的幾點(diǎn)說(shuō)明 (1)在邏輯位運(yùn)算中,的優(yōu)先級(jí)高于算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符, 其他位運(yùn)算符則低于關(guān)系運(yùn)算符、高于邏輯運(yùn)算符。 (2)參加位運(yùn)算的操作數(shù)必須是整型或字符型數(shù)據(jù)(常量或變量),不能是其它類(lèi)型的數(shù)據(jù)。 (3)兩個(gè)長(zhǎng)度不同的數(shù)據(jù)進(jìn)行位運(yùn)算時(shí),系統(tǒng)先將兩者的右端對(duì)齊,短的運(yùn)算對(duì)象若是有符號(hào)數(shù)則按符號(hào)位擴(kuò)展,若是無(wú)符號(hào)數(shù)則以“0”擴(kuò)充。 (4)位運(yùn)算符的優(yōu)先級(jí)如下:按位取反運(yùn)算符“”的優(yōu)先級(jí)最高,高于所有的雙目運(yùn)算符;其次是左移運(yùn)算符“”,其優(yōu)先級(jí)高于關(guān)系運(yùn)算符;最低的是按位與“ int mask,i,count=0; printf(請(qǐng)輸入一個(gè)字符:); ch=getchar();

4、printf(該字符的ASCII是%dn,ch); mask=0 x80; for(i=0;i=1; printf(ASCII中1的個(gè)數(shù)有: %dn,count); getch(); ,11.2 1 按位取反運(yùn)算,按位取反運(yùn)算是用來(lái)對(duì)二進(jìn)制按位進(jìn)行取反運(yùn)算,是單目運(yùn)算符。按位取反運(yùn)算符用“”表示。按位取反運(yùn)算符是位運(yùn)算中惟一的單目運(yùn)算符,運(yùn)算對(duì)象應(yīng)置于運(yùn)算符的右邊。 1、按位取反運(yùn)算的運(yùn)算規(guī)則 按位取反運(yùn)算的運(yùn)算規(guī)則:把運(yùn)算對(duì)象的內(nèi)容按位取反,將每一位上的0變1,1變0。 即0=1,1=0。 例如:對(duì)十六進(jìn)制數(shù)32進(jìn)行取反。 0 0 1 1 0 0 1 0=1 1 0 0 1 1 0 1 結(jié)

5、果為1 1 0 0 1 1 0 1。 又如: a=0000 0000 0000 1011,則表達(dá)式a的值為1111 1111 1111 0100。 unsigned char a,b; /*定義兩個(gè)無(wú)符號(hào)字符型變量a,b* b=a /*對(duì)變量a全部位取反,結(jié)果賦值給b*/ printf(a =%dn,b); /*輸出十進(jìn)制b值*/,,2、按位取反運(yùn)算的主要應(yīng)用 按位取反運(yùn)算的主要應(yīng)用:用來(lái)適應(yīng)不同字長(zhǎng)型號(hào)的機(jī)型,幫助得到使原數(shù)最低位為0。例如:想使a中最低位為0,可讓a=a c=a 運(yùn)行結(jié)果: a=264,b=255,c=13 (2)測(cè)試指定位的值:要判斷某一指定位的值是否為1或0,只需

6、將這一位與1進(jìn)行“按位與”操作,然后判斷結(jié)果是否為1或0即可。,,例:設(shè)x是一個(gè)字符型變量(8位二進(jìn)制位),判斷x的最低位是否為1。 方法是:把x和0 x01進(jìn)行“按位與”運(yùn)算,如果結(jié)果為1則x的最低位是1。 x =* * * * * * * * 運(yùn)行結(jié)果: x=268,y=1,z=0 應(yīng)當(dāng)注意:“按位與”運(yùn)算 z=x|y; printf(x=%d,y=%d,z=%dn,x,y,z); ,11.2.4 按位異或運(yùn)算,按位異或運(yùn)算符是指參與運(yùn)算的兩個(gè)數(shù)對(duì)應(yīng)的二進(jìn)制位進(jìn)行邏輯按位異或的操作,用“”表示。 1、按位異或運(yùn)算符的運(yùn)算規(guī)則 按位異或運(yùn)算符的運(yùn)算規(guī)則:若兩個(gè)運(yùn)算對(duì)象的對(duì)應(yīng)二進(jìn)制位不同,則

7、結(jié)果的對(duì)應(yīng)數(shù)位為1,否則為0。按位異或運(yùn)算可能的運(yùn)算組合及其運(yùn)算結(jié)果如下所示: 00=0 10=1 01=1 11=0 例如,x=0000 0000 0000 1011,y=0000 0000 0000 1010,則表達(dá)式xy的計(jì)算結(jié)果如下:,,又如: c=106 10: 0000,0000,0000,1010 printf(請(qǐng)輸入一個(gè)十六進(jìn)制數(shù)a:n); scanf(%x, ,11.2.5 左移運(yùn)算,左移運(yùn)算符是把“<<”符號(hào)左邊的運(yùn)算數(shù)的各二進(jìn)制位全部左移若干位,移動(dòng)的若干位由“<<”符號(hào)右邊的數(shù)指定,高位丟棄,低位補(bǔ)0,用“<<”表示。 1、左移運(yùn)算符的運(yùn)算規(guī)則 左移運(yùn)算

8、符的運(yùn)算規(guī)則:將運(yùn)算對(duì)象中的每個(gè)二進(jìn)制數(shù)位向左移動(dòng)若干位,從左邊移出去的高位部分被丟棄,右邊空出的低位部分用“0”補(bǔ)齊。 例如:x=0000 0000 0000 1011,則x<<2的結(jié)果為0000 0000 0010 1100。 又例如:左移運(yùn)算舉例: char a=30; a=a<<2; 結(jié)果如下: (30)=(0001,1110)(二進(jìn)制) 左移后為(120)=(0111,1000)(二進(jìn)制),,注意: 若移出的高位部分不包含數(shù)位1,則每左移1位,相當(dāng)于乖2,左移n 位相當(dāng)于乖2的n次方。 若對(duì)c=44(00101100)進(jìn)行下面的操作: c=c<<1;c的值變?yōu)?8(010110

9、00) c=c<<1;c的值變?yōu)?76(10110000),11.2.6 右移運(yùn)算,右移運(yùn)算符把運(yùn)算符左邊的運(yùn)算數(shù)的各二進(jìn)制位全部右移若干位,用“”表示,移動(dòng)的若干位由“”符號(hào)右邊的數(shù)指定。 右移運(yùn)算符的運(yùn)算規(guī)則:將運(yùn)算對(duì)象中的每個(gè)二進(jìn)制數(shù)位向右移動(dòng)若干位,從右邊移出去的低位部分被丟棄,左邊空出的高位部分的處理分兩種情況。對(duì)無(wú)符號(hào)數(shù)和正數(shù)來(lái)講,左邊空出的高位部分補(bǔ)“0”;對(duì)負(fù)數(shù)來(lái)講,左邊空出的高位部分補(bǔ)“0”還是補(bǔ)“1”,與所使用的編譯程序有關(guān),有的編譯程序補(bǔ)“0”,稱(chēng)為邏輯右移,有的編譯程序補(bǔ)“1”,稱(chēng)為算術(shù)右移。 例如: char a=0 x78; a=a2; 結(jié)果如下: 16進(jìn)制78=1

10、20=(0111,1000)(二進(jìn)制) 右移后為:(30)=(0001,1110)(二進(jìn)制),,應(yīng)當(dāng)注意: (1)若移出的位全為0,則每右移1位,相當(dāng)于除2,右移n 位相當(dāng)于除2的n次方。 (2)當(dāng)進(jìn)行右移運(yùn)算時(shí),操作結(jié)果與操作數(shù)是否帶符號(hào)有關(guān)。 v無(wú)符號(hào)操作數(shù)右移時(shí),左端出現(xiàn)的空位補(bǔ)0,右端移出的數(shù)據(jù)舍去。 v帶符號(hào)操作數(shù)右移時(shí),左端出現(xiàn)的空位補(bǔ)符號(hào)位。若符號(hào)位為0則左邊也是移入0,若符號(hào)位為1則左端也是移入1,移出的數(shù)據(jù)舍去。 例如:帶符號(hào)數(shù)a=16和無(wú)符號(hào)數(shù)b=240,進(jìn)行下列操作: a=a1;a的值變?yōu)?(11111000) b=b1;b的值變?yōu)?20(01111000) a=a1;a

11、的值變?yōu)?(11111100) b=b1;b的值變?yōu)?0(00111100),11.3 位域,在程序設(shè)計(jì)中,有時(shí)存儲(chǔ)一個(gè)信息不必用一個(gè)或多個(gè)字節(jié),可以在一個(gè)字節(jié)中存放一個(gè)或多個(gè)信息。例如,“真”或“假”用1或0表示,只需一位即可,如果用一個(gè)變量來(lái)存儲(chǔ),則將浪費(fèi)存儲(chǔ)空間。為了解決該問(wèn)題,C語(yǔ)言提供了位段操作。 在前面介紹的位與運(yùn)算、位或運(yùn)算、位異或運(yùn)算、反運(yùn)算、左移運(yùn)算、右移運(yùn)算等幾種的綜合運(yùn)算,可以實(shí)現(xiàn)對(duì)某一位或某幾位的存取,但較麻煩。c語(yǔ)言中允許在結(jié)構(gòu)體中以位為單位來(lái)指定其成員所占的內(nèi)存長(zhǎng)度,這種以位為單位的成員就稱(chēng)為位段或位域(bit field)。 所謂位段是由一個(gè)或多個(gè)二進(jìn)制數(shù)位組成的

12、,它是數(shù)據(jù)的一種壓縮形式。位段是一種特殊的壓縮形式結(jié)構(gòu)體結(jié)構(gòu)中的成員,它的特殊性在于它是以位為單位定義長(zhǎng)度的。,11.3.1 位域或位段(bit field)的定義形式,c語(yǔ)言中允許在結(jié)構(gòu)體中以位為單位來(lái)指定其成員所占的內(nèi)存長(zhǎng)度,這種以位為單位的成員就稱(chēng)為位段或位域(bit field)。 所謂位段是由一個(gè)或多個(gè)二進(jìn)制數(shù)位組成的,它是數(shù)據(jù)的一種壓縮形式。位段是一種特殊的壓縮形式結(jié)構(gòu)體結(jié)構(gòu)中的成員,它的特殊性在于它是以位為單位定義長(zhǎng)度的。,11.3.1 位域或位段(bit field)的定義形式,位域或位段(bit field)的定義形式如下: struct 位域結(jié)構(gòu)體名 位域列表 其中,位域列

13、表的形式為: 類(lèi)型說(shuō)明符 位域名:位域長(zhǎng)度; 其中,位域名的類(lèi)型必須指定為unsigned int 型或int型,一般為unsigned型。位域長(zhǎng)度以二進(jìn)制位為單位。例如: struct bs unsigned int a:1; unsigned int b:3; unsigned int c:4; bit,*pbit; 定義了結(jié)構(gòu)體bs,該結(jié)構(gòu)體變量共有3個(gè)成員,其中a,b,c成員是位段,分別占1位、3位、4位,共占1個(gè)字節(jié)。,,又如: struct wd unsigned a:2; unsigned b:3; unsigned c:6; unsigned d:4; int k

14、; dat; 定義了結(jié)構(gòu)體wd,該結(jié)構(gòu)體變量共有5個(gè)成員,其中a、b、c、d成員是位段,分別占2位、3位、6位、4位,k是的一般成員,k占2個(gè)字節(jié)。,11.3.2 位域的引用,位域的引用方法與引用結(jié)構(gòu)體變量中的成員相同,即: 位域結(jié)構(gòu)體名.位域名 在C語(yǔ)言中,可以通過(guò)賦值語(yǔ)句給位域賦值。例如: struct bs unsined a:6; int b:2; int c:8; data; 這里定義一個(gè)位域結(jié)構(gòu)bs,同時(shí)定義了data為bs變量,共占兩個(gè)字節(jié)。其中位域a占6位,b占2位,c占8位。 位域中數(shù)據(jù)的引用為: data.a=7; data.b=1; data.c=9;,注意:,1、賦值

15、時(shí)不能超過(guò)位域允許的最大值范圍,如data.b 只占2個(gè)位,最大值為3,此時(shí)若把8(二進(jìn)制為1000)賦給它,就會(huì)自動(dòng)取賦予該數(shù)的低位,也是就00,最終data.b的值為0。 2、位域還可以用整型格式符輸出。例如: printf(“%d,%d,%dn”,data.a,data.b,data.c); 也可以用%u、%o、%x等格式符輸出。,11.4 位運(yùn)算應(yīng)用舉例,例:從鍵盤(pán)上輸入一個(gè)正整數(shù)n,判斷此數(shù)是奇數(shù)還是偶數(shù)。 分析:奇數(shù)的二進(jìn)制表示中右邊的第1位為1,偶數(shù)的二進(jìn)制表示中右邊的第1位為0。因此該題就轉(zhuǎn)換為取該數(shù)右邊的第1位,并判斷其值是否為0。 程序清單如下: main( ) int

16、n; printf(請(qǐng)輸入一個(gè)大于0的數(shù) n:); scanf(%d, ,例:將十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。,分析:人們有時(shí)希望知道某個(gè)十六進(jìn)制數(shù)的二進(jìn)制數(shù)是什么,但C語(yǔ)言的printf()函數(shù)只提供%x,%d,%o方式輸出一個(gè)整數(shù)(即十六進(jìn)制,十進(jìn)制,八進(jìn)制)而不能直接輸出一個(gè)整數(shù)的二進(jìn)制形式,需要人工轉(zhuǎn)換,很不方便。在這里可以用位運(yùn)算來(lái)實(shí)現(xiàn)此功能。 采用的方法是:對(duì)一個(gè)整數(shù)num(16位)的每一位進(jìn)行測(cè)試,視其為0還是為1,可以設(shè)置一個(gè)屏蔽字與該數(shù)進(jìn)行 該bit的值(非1即0)就是num第15位之值。下面處理第14位,此時(shí)mask應(yīng)改為0 x4000,也就是使mask右移一位。,,main(

17、) int j,num,bit; unsigned int mask; mask=0 x8000; printf(n請(qǐng)輸入一個(gè)數(shù)十六進(jìn)制的數(shù):); scanf(%x, ,本章小結(jié),C語(yǔ)言是為了描述系統(tǒng)而設(shè)計(jì)的,它既具有高級(jí)語(yǔ)言的特點(diǎn),又具有低級(jí)語(yǔ)言的功能。位運(yùn)算就是其低級(jí)語(yǔ)言的功能,本章介紹了位運(yùn)算和位域。 1、位運(yùn)算 所謂位運(yùn)算是指對(duì)二進(jìn)制數(shù)位進(jìn)行的運(yùn)算。每一個(gè)二進(jìn)制數(shù)位只能存放0或1,因此位運(yùn)算符的運(yùn)算對(duì)象是一個(gè)二進(jìn)制數(shù)位的集合。本章介紹了C語(yǔ)言提供的六種位運(yùn)算符(按位與&、按位或|、按位異或、按位取反、左移)的格式、運(yùn)算規(guī)則、主要用途及實(shí)現(xiàn)方法。 2、位域 位域是一種比較簡(jiǎn)單的結(jié)構(gòu)體,它以位為單位來(lái)指定其成員所占內(nèi)存的長(zhǎng)度,這種以位為單位的成員構(gòu)成的結(jié)構(gòu)稱(chēng)為“位域”或稱(chēng)為“位段”。本章介紹了位域的概念、定義及引用方法。,,,,,,,

展開(kāi)閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!