位運算常見操作
判斷奇偶
-
(x & 1) == 1==x % 2 == 1判斷奇數 -
(x & 1) == 0==x % 2 == 0判斷偶數
位運算除法
x / 2 == x >> 1
>>> 為無符號右移,高位補0。>>為有符號右移,正數高位補0,負數高位補1。
獲取二進制最右邊的 1 :x & (-x)
- 求補碼的方式:按位取反加1
- 取完補碼之后,可以看出,結果是最右邊的 1 不動,然后其他所有位都按位取反。
- 要清楚,計算機計算負數的時候,會求其補碼,正數的補碼是自己本身,負數的補碼就是上面的求法,這樣互為相反數的兩個補碼進行
&,就會得到最后一位 1 ,其前面和后面的1都會被過濾掉,后面的0會保留,形成新的二進制數。
將二進制最右邊的 1 去掉: x & (x - 1)
- 首先要了解
x - 1會發(fā)生什么,從二進制的角度,這會影響最后的1以后的數位,前面不會影響。然后 -1 之后,最右邊的 1 變成 0,后面的0都會變成 1。 - 然后
&操作,結果上就是把 最右邊的 1 去掉。

