二进制位运算的技巧特别多,这里就做一份cheat sheet,希望能帮助到大家。不过过于简单的就不列举了
单行表达式 作用 表达式 把右边连续的1变成0 n & ( n + 1 ) 把右边第一个1变成0 n & ( n - 1 ) 把右起第一个0变成1 n | ( n + 1 ) 把右起连续的0变成1 n | ( n - 1 ) 取右边连续的1 n ^ ( n + 1 ) 去掉右起第一个1的左边 n & -n 或 n & ( n ^ ( n - 1 ) ) 高低位交换,前x位 ( n << x ) | ( x >> ( 32 - x ) ) 有符号整数计算绝对值 ( n ^ (n >> 31) ) - (n >> 31)