0x01 位运算位运算和按位贪心是常用的计算和优化手段。其中,按位枚举可以将线性级别的枚举优化至 log 级别;由于二进制的独特性质 20+21+⋯+2k−1<2k,也让从高位到低位的按位贪心成为了可能。本文接下来将介绍一系列的位运算基本技巧,并结合例题分析位运算优化的运用。 位运算技巧位运算的基本运算符为:&, |, ^, <<, >>, ~,分别表示按位与、或、异或、左移,右移,取反。需要注意的是,由于位运算的优先级较低,运算时最好加上括号。 假设二进制位的最低位为第 0 位,当前的数为 x,则 - 将 x 左移,右移一位:
x << 1,x >> 1; - 将 x 最后一位变为 1,0:
x | 1,(x|1) - 1; - 将 x 二进制第 k 位变为 1,0:
x | (1 << k),x (& ~(1 << k)); - 将 x 二进制后 k 位变为 1,0:
x | ((1<<k)-1) - 取 x 的第 k 位:
(x >> k) & 1 - lowbit
关闭
站长推荐 /1
|