資源描述:
《位運(yùn)算符和位運(yùn)算.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第12章 位運(yùn)算12.1 位運(yùn)算符和位運(yùn)算12.2 位運(yùn)算舉例12.3 位段12.1 位運(yùn)算符和位運(yùn)算運(yùn)算符含義運(yùn)算符含義&按位與~取反|按位或<<左移^按位異或>>右移數(shù)值在計(jì)算機(jī)中的表示1.二進(jìn)制位與字節(jié)計(jì)算機(jī)系統(tǒng)的內(nèi)存儲(chǔ)器,是由許多稱為字節(jié)的單元組成的,1個(gè)字節(jié)由8個(gè)二進(jìn)制位(bit)構(gòu)成,每位的取值為0/1。最右端的那1位稱為“最低位”,編號(hào)為0;最左端的那1位稱為“最高位”,而且從最低位到最高位順序,依次編號(hào)。圖11-1是1個(gè)字節(jié)各二進(jìn)制位的編號(hào)。圖11-11個(gè)字節(jié)各二進(jìn)制位的編號(hào)2.數(shù)值的原
2、碼表示數(shù)值的原碼表示是指,將最高位用作符號(hào)位(0表示正數(shù),1表示負(fù)數(shù)),其余各位代表數(shù)值本身的絕對(duì)值(以二進(jìn)制形式表示)的表示形式。為簡(jiǎn)化描述起見(jiàn),本節(jié)約定用1個(gè)字節(jié)表示1個(gè)整數(shù)。76543210例如,+9的原碼是00001001└→符號(hào)位上的0表示正數(shù)-9的原碼是10001001。└→符號(hào)位上的1表示負(fù)數(shù)3.數(shù)值的反碼表示數(shù)值的反碼表示分兩種情況:(1)正數(shù)的反碼:與原碼相同。例如,+9的反碼是00001001。(2)負(fù)數(shù)的反碼:符號(hào)位為1,其余各位為該數(shù)絕對(duì)值的原碼按位取反(1變0、0變1)。例如,
3、-9的反碼:因?yàn)槭秦?fù)數(shù),則符號(hào)位為“1”;其余7位為-9的絕對(duì)值+9的原碼0001001按位取反為1110110,所以-9的反碼是11110110。4.數(shù)值的補(bǔ)碼表示數(shù)值的補(bǔ)碼表示也分兩種情況:(1)正數(shù)的補(bǔ)碼:與原碼相同。例如,+9的補(bǔ)碼是00001001。(2)負(fù)數(shù)的補(bǔ)碼:符號(hào)位為1,其余位為該數(shù)絕對(duì)值的原碼按位取反;然后整個(gè)數(shù)加1。例如,-9的補(bǔ)碼:因?yàn)槭秦?fù)數(shù),則符號(hào)位為“1”;其余7位為-9的絕對(duì)值+9的原碼0001001按位取反為1110110;再加1,所以-9的補(bǔ)碼是11110111。已知一
4、個(gè)數(shù)的補(bǔ)碼,求原碼的操作分兩種情況:(1)如果補(bǔ)碼的符號(hào)位為“0”,表示是一個(gè)正數(shù),所以補(bǔ)碼就是該數(shù)的原碼。(2)如果補(bǔ)碼的符號(hào)位為“1”,表示是一個(gè)負(fù)數(shù),求原碼的操作可以是:符號(hào)位不變,其余各位取反,然后再整個(gè)數(shù)加1。例如,已知一個(gè)補(bǔ)碼為11111001,則原碼是10000111(-7):因?yàn)榉?hào)位為“1”,表示是一個(gè)負(fù)數(shù),所以該位不變,仍為“1”;其余7位1111001取反后為0000110;再加1,所以是10000111。5.數(shù)值在計(jì)算機(jī)中的表示──補(bǔ)碼在計(jì)算機(jī)系統(tǒng)中,數(shù)值一律用補(bǔ)碼表示(存儲(chǔ)),
5、原因在于:使用補(bǔ)碼,可以將符號(hào)位和其它位統(tǒng)一處理;同時(shí),減法也可按加法來(lái)處理。另外,兩個(gè)用補(bǔ)碼表示的數(shù)相加時(shí),如果最高位(符號(hào)位)有進(jìn)位,則進(jìn)位被舍棄。12.1.1"按位與"運(yùn)算符──&(1)格式:x&y(2)規(guī)則:對(duì)應(yīng)位均為1時(shí)才為1,否則為0:3&5=1。例如,3&5=1:0011&0101────0001=1(3)主要用途:取(或保留)1個(gè)數(shù)的某(些)位,其余各位置0。12.1.2."按位或"運(yùn)算符──
6、(1)格式:x
7、y(2)規(guī)則:對(duì)應(yīng)位均為0時(shí)才為0,否則為1:3
8、9=11。例如,3
9、9=11
10、:0011
11、1001────1011=11(3)主要用途:將1個(gè)數(shù)的某(些)位置1,其余各位不變。12.1.3."按位異或"運(yùn)算符──^(1)格式:x^y(2)規(guī)則:對(duì)應(yīng)位相同時(shí)為0,不同時(shí)為1:57^42=19。00111001&00101010────────00010011(3)主要用途:使1個(gè)數(shù)的某(些)位翻轉(zhuǎn)(即原來(lái)為1的位變?yōu)?,為0的變?yōu)?),其余各位不變。12.1.4."按位取反"運(yùn)算符──~(1)格式:~x(2)規(guī)則:各位翻轉(zhuǎn),即原來(lái)為1的位變成0,原來(lái)為0的位變成1:在IBM-PC機(jī)
12、中,~0=0xffff,~9=0xfff6。(3)主要用途:間接地構(gòu)造一個(gè)數(shù),以增強(qiáng)程序的可移植性。12.1.5."按位左移"運(yùn)算符──<<(1)格式:a<<位數(shù)(2)規(guī)則:使操作數(shù)的各位左移,低位補(bǔ)0,高位溢出:a=15,則a=a<<2;后a的值為60即從:0000 1111左移2位后為00111100(3)左移1位相當(dāng)于乘于2(當(dāng)高位不包含0時(shí))12.1.6“按位右移”運(yùn)算符──>>(1)格式:a>>位數(shù)(2)規(guī)則:使操作數(shù)的各位右移,移出的低位舍棄;高位:1)對(duì)無(wú)符號(hào)數(shù)和有符號(hào)中的正數(shù),補(bǔ)0;2)
13、有符號(hào)數(shù)中的負(fù)數(shù),取決于所使用的系統(tǒng):補(bǔ)0的稱為“邏輯右移”,補(bǔ)1的稱為“算術(shù)右移”。例如:a=017:00001111a>>2為:00000011又如a:10101111a>>2:00101011(邏輯右移)a>>2:11101011(算術(shù)右移)12.1.7 位運(yùn)算賦值運(yùn)算符a&=b等價(jià)于a=a&ba<<=b等價(jià)于a=a<