C++ 左移 (<<)、右移 (>>) 用法总结
C++ 左移 (<<)、右移 (>>) 用法总结
-
左移 << = 快速 × 2ⁿ
x << 1 → x * 2
x << 2 → x * 4
x << k → x * 2^k -
右移 >> = 快速 ÷ 2ⁿ(向下取整)
x >> 1 → x / 2(整数除法,向下取整)
x >> k → x / 2^k -
快速计算 2 的幂
1 << n 就是 2ⁿ,替代 pow(2,n)(避免浮点误差) -
位运算:取 / 设 / 清第 k 位
获取第 k 位 (x >> k) & 1 把第 k 位移到最低位,和 1 相与
设置第 k 位为 1 x |= (1 << k)` 不改变其他位,只把第 k 位设 1
清空第 k 位为 0 x &= ~(1 << k) 只把第 k 位设 0
翻转第 k 位 x ^= (1 << k) 0 变 1,1 变 0 -
快速判断奇偶
x & 1 等价 x % 2,速度更快
奇数:x & 1 == 1
偶数:x & 1 == 0 -
交换两个数(不用临时变量)
a ^= b;
b ^= a;
a ^= b;

浙公网安备 33010602011771号