不会位运算?常见位运算总结!~~~
这里是Themberfue
本章介绍的主要是一些常见的位运算技巧。
基础位运算
· << 左移运算符 => 向某个数字的二进制形式左移 n 位
· >> 右移运算符 => 向某个数字的二进制形式右移 n 位
· ~ 取反运算符,0变1,1变0
· & 与运算符,有0就是0
· | 或运算符,有1就是1
· ^ 异或运算符,相同为0,不同为1,也可以理解为无进位相加
给一个数 n ,确定它的二进制表示中的 x 位是0还是1
· 将 n 右移 x 位,然后与上1,若结果为0,则为0,结果为1,则为1。
· (n >> x) & 1
· 如图所示
将一个数 n 的二进制表示的 x 位修改为1
· 将 1 左移 x 位,然后或上 n,即可
· n | (1 << x)
· 如图所示
将一个数 n 的二进制表示的 x 位修改为0
· 将 1 左移 x 位,取反后与上 n,即可
· n & (~(1 << x))
提取一个数 n 二进制表示最右侧的1
n & -n
干掉一个数 n 二进制表示最右侧的1
n & (n - 1)
异或(^)运算规律
· a ^ 0 = a
· a ^ a = 0
· a ^ b ^ c = a ^ (b ^ c)