Leetcode上有人贴的代码 int diff = ... diff &= -diff; 得到的是 二进制 最后为一的 bit位, 比如diff = 0x1110, 上述运算后 diff为 0x0010, 求解释.
负数的二进制是原码的补码,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1
所以-diff二进制就是
0x111....10010
& 0x000000001110 后得0x10