表示负数的方式称为2的补码。为了演示其工作原理,以-12为例。12的二进制值为00001100(假设整数为8位,尽管实际上它们要大得多)。只需将每个位取反即可得到2的补码,得到11110011。然后,简单地加1得出11110100。请注意,如果再次应用相同的步骤,则将得到正数12。
无论如何都变为零,因此12 >>> 1应该给您00000110,即6,而(-12)>>>
1应该给您01111010,即122。如果您实际尝试Java,因为Java int实际上大于8位,所以您得到的数字会更多。的移位与最高位相同,因此正数保持正数,负数保持负数。12 >> 1是00000110(仍然是6),(-12)>> 1将是11111010,它是负数6。



