位運算的常見操作

想了解更多位運算的操作,可以關注微信公衆號“數據結構和算法”,每天一題爲你精彩解答。

常見運算符

&:按位與。

|:按位或。

~:按位非。

^:按位異或。(相同爲0,否則爲1)

<<:左位移運算符。

“>>”:右位移運算符。

<<<:無符號右移運算符。

常見操作

1,判斷x是奇數還是偶數:(x&1)==0

2,x乘以一個2的n次方的數:x<<n

3,x除以一個2的n次方的數:x>>n

4,消去x最後一位的1:x&(x-1)

5,求x的相反數(x-1)或者x+1

6,x的異或操作:~x = -x-1

7,把x從右邊數第n位變1:x|(1<<(n-1))(n從1開始)

8,把x從右邊數第n位變0:x&(~(1<<(n-1)))(n從1開始)

9,取x最後n位的值:x&((1<<n)-1)

10,取x前n位的值,後面的全部置爲0:x & (~((1 << (32 - n)) - 1))

11,只保留x右邊第一個1,其他的全部置爲0:x & (-x)

或x & ~(x - 1)

12,判斷x的第n位是偶數還是奇數:(x & (1 << (n - 1))) == 0

13,求x的絕對值:(n ^ (n >> 31)) - (n >> 31)

或(x >> 31) == 0 ? x : (~x + 1)

或(x + (x >> 31)) ^ (x >> 31)

14,求兩個數的最大數:(x & ((y - x) >> 31)) | (y & (~(y - x) >> 31))

15,返回x的符號:(i >> 31) | (-i >>> 31)(正數爲1,負數爲-1)

16,兩數相加:(x | y) + (x & y)

或(x ^ y) + ((x & y) << 1)

17,兩數相減:(x & ~y) - (~x & y)

18,求兩數的平均數:(x & y) + ((x ^ y) >> 1)

或(x + y) >> 1

19,判斷一個數是不是2的次冪:(x != 0) && (x & (x - 1)) == 0

20,x對2的n次方求餘:x & (2^n - 1)(這裏的^是冪的次方)

21,判斷x和y的符號是否相同:(a ^ b) >= 0

22,if(x == a) x = b; if(x == b) x = a:用異或運算符:x = a ^ b ^ x。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章