x & (-x) 可以获取到二进制中最右边的 1,且其它位设置为 0。换句话说,此操作将 x 所有位取反,但是最右边的 1 除外。如何将二进制中最右边的 1 设置为 0:x & (x - 1)。一个数异或一个数两次会相当于什么都没做 a^a = 0 0^a =aa ^ b ^ b =a