位运算
本篇文章主要罗列一些位运算的技巧,加强记忆。
消去$x$二进制位的最后一位$1$ :
x&(x-1)
判断$x$是否是$2$的幂 :
x&(x-1)==0
判断数$x$的二进制有几个$1$ :每次去掉最低位$1$,统计次数
两个数$a,b$,$a\bigoplus b\bigoplus b=a$,一个数异或两次另一个数得到自身,由异或运算满足结合律很好理解。
不设中间值,交换两个变量$a,b$的值 :
a=a^b,b=a^b,a=a^b
.a^b<=a+b
例题:永夜的报应
- 取余操作$a\pmod b$,当除数$b$为$2^n$形式,可以转化为
a&(b-1)
,效率更高。
暂时想到这么多,,,