【基礎】c++位運算
阿新 • • 發佈:2019-01-06
目錄
& 與 << 左移
| 或 >> 右移
^ 抑或
用法
& 與 (and)
1 & 1 = 1 其他組合都為0 1.判斷奇偶 奇數的最後一位是1, 偶數的最後一位是0 2.判斷某一位是1還是0| 或 (or)
1 | 1 = 1; 0 | 0 = 0;
1 | 0 = 1; 0 | 1 = 1;
只要有一個是 1 就返回 1
^ 抑或 (xor)
1 ^ 1 = 0; 0 ^ 0 = 0; 1 ^ 0 = 1; 0 ^ 1 = 1; 注意 : 滿足 ( a ^ b) ^ b = a;以上這些都可以在搜尋或其他演算法中作為收集 true 和 false 的工具
<<左移 (shl)
a << b = a * ( 2 ^ b ) // 注 : 這裡指2的b次方, 下同
即把a的二進位制表示數後新增b個0
常用 1 << x 來表示 2 的 x 次方
>>右移 (shr)
a >> b = int( a / (2 ^ b ) )即把a的二進位制表示數後硬生生除去b位
以上兩種移位的運算可以用於各種二分、樹上倍增(其他倍增也可以)、堆的運算等等
即把a的二進位制表示數後新增b個0