參考文獻http://blog.csdn.net/baitxaps/article/details/50160125
位運算符
最高位是符號位敢朱;0表示正數(shù)剪菱;1表示負(fù)數(shù)
原碼、反碼拴签、補碼
· 正數(shù)的原碼孝常、反碼、補碼相同
123的原碼:00000000 00000000 00000000 01111011
123的反碼:00000000 00000000 00000000 01111011
123的補碼:00000000 00000000 00000000 01111011
· 負(fù)數(shù)的原碼是按照絕對值轉(zhuǎn)換后蚓哩,最高位補1构灸;反碼是除符號位外,所有位取反岸梨;補碼為反碼加1喜颁;
-123的原碼:10000000 00000000 00000000 01111011
-123的反碼:11111111 11111111 11111111 10000100
-123的補碼:11111111 11111111 11111111 10000101
平時進行的運算實則是反碼之間的運算。
實際使用
① 判斷奇偶性
a & 1 == 0 曹阔,a為偶數(shù)半开;a & 1 == 1,a為基數(shù)赃份;
②求平均數(shù)
(a & b) + ((a ^ b) >> 1)
③x,y交換數(shù)據(jù)
x ^= y ; y^=x ; x^=y
④求絕對值
(a ^ (a >> 31) - (a >> 31))
⑤判斷一個數(shù)是否是2的冥
a & (a - 1) == 0
⑥相反數(shù)
(~x + 1)
⑦作為標(biāo)志位
eg:
red = 0001
blue = 0010
yellow = 0100
0111:代表紅藍黃
0101:代表紅黃