資源描述:
《java位運算符詳解》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、按位與運算符(&)參加運算的兩個數(shù)據(jù),按二進制位進行“與”運算。運算規(guī)則:0&0=0;??0&1=0;???1&0=0;????1&1=1;??????即:兩位同時為“1”,結(jié)果才為“1”,否則為0例如:3&5?即00000011&00000101=00000001??因此,3&5的值得1。?另,負數(shù)按補碼形式參加按位與運算。“與運算”的特殊用途:(1)清零。如果想將一個單元清零,即使其全部二進制位為0,只要與一個各位都為零的數(shù)值相與,結(jié)果為零。?(2)取一個數(shù)中指定位方法:找一個數(shù),對應(yīng)X要取的位,該數(shù)的對應(yīng)位為1,其余位為零,此數(shù)與X進行“
2、與運算”可以得到X中的指定位。例:設(shè)X=10101110,???取X的低4位,用X&00001111=00001110?即可得到;???還可用來取X的2、4、6位。?按位或運算符(
3、)參加運算的兩個對象,按二進制位進行“或”運算。運算規(guī)則:0
4、0=0;??0
5、1=1;??1
6、0=1;???1
7、1=1;?????即:參加運算的兩個對象只要有一個為1,其值為1。例如:3
8、5 即00000011?
9、00000101=00000111??因此,3
10、5的值得7?!?另,負數(shù)按補碼形式參加按位或運算?!盎蜻\算”特殊作用:(1)常用來對一個數(shù)據(jù)的某些位置1。
11、方法:找到一個數(shù),對應(yīng)X要置1的位,該數(shù)的對應(yīng)位為1,其余位為零。此數(shù)與X相或可使X中的某些位置1。例:將X=10100000的低4位置1,用X?
12、00001111=10101111即可得到。?異或運算符(^)參加運算的兩個數(shù)據(jù),按二進制位進行“異或”運算。運算規(guī)則:0^0=0;??0^1=1;??1^0=1;??1^1=0;???即:參加運算的兩個對象,如果兩個相應(yīng)位為“異”(值不同),則該位結(jié)果為1,否則為0。?“異或運算”的特殊作用:(1)使特定位翻轉(zhuǎn)找一個數(shù),對應(yīng)X要翻轉(zhuǎn)的各位,該數(shù)的對應(yīng)位為1,其余位為零,此數(shù)與X對應(yīng)位異或即可。例:
13、X=10101110,使X低4位翻轉(zhuǎn),用X^00001111=10100001即可得到。?(2)與0相異或,保留原值,X^00000000=10101110。從上面的例題可以清楚的看到這一點。取反運算符(~)參加運算的一個數(shù)據(jù),按二進制位進行“取反”運算。運算規(guī)則:~1=0;??~0=1;?????即:對一個二進制數(shù)按位取反,即將0變1,1變0。?使一個數(shù)的最低位為零,可以表示為:a&~1。~1的值為1111111111111110,再按“與”運算,最低位一定為0。因為“~”運算符的優(yōu)先級比算術(shù)運算符、關(guān)系運算符、邏輯運算符和其他運算符都高。左
14、移運算符(<<)將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。例:a=a<<2將a的二進制位左移2位,右補0,左移1位后a?=?a*2;?若左移時舍棄的高位不包含1,則每左移一位,相當于該數(shù)乘以2。右移運算符(>>)將一個數(shù)的各二進制位全部右移若干位,正數(shù)左補0,負數(shù)左補1,右邊丟棄。操作數(shù)每右移一位,相當于該數(shù)除以2。例如:a=a>>2將a的二進制位右移2位,左補0?or補1得看被移數(shù)是正還是負。?>>運算符把expression1的所有位向右移expression2指定的位數(shù)。expression1的符號位被用來
15、填充右移后左邊空出來的位。向右移出的位被丟棄。例如,下面的代碼被求值后,temp的值是-4:?-14(即二進制的11110010)右移兩位等于-4(即二進制的11111100)。?vartemp=-14>>2???無符號右移運算符(>>>)?>>>運算符把expression1的各個位向右移expression2指定的位數(shù)。右移后左邊空出的位用零來填充。移出右邊的位被丟棄。例如:vartemp=-14>>>2變量temp的值為-14(即二進制的11111111111111111111111111110010),向右移兩位后等于107374182
16、0(即二進制的00111111111111111111111111111100)。復(fù)合賦值運算符位運算符與賦值運算符結(jié)合,組成新的復(fù)合賦值運算符,它們是:&=???例:a&=b???????相當于a=a&b
17、=???例:a
18、=b???????相當于a=a
19、b>>=??例:a>>=b??????相當于a=a>>b<<=例:a<<=b?????相當于a=a<
20、位運算。以“與”運算為例說明如下:我們知道在C語言中l(wèi)ong型占4個字節(jié),int型占2個字節(jié),如果一個long型數(shù)據(jù)與一個int型數(shù)據(jù)進行“與”運算,