按位进行反转~运算
首先,让我们逐位看看相反的概念
按位取反运算符:对数据的每个二进制位取反,即把0变成1,把1变成0.
即~x=-x-1
这里遵循定义
的二进制文件为00001001
每位反转为11110110
结果是-10
这个过程没有任何问题,但是如果忘记了负数的二进制表示,就会对这个结果产生疑问。 为什么11110110表示-10而不是503? 理解逐位取反的密钥是理解11110110为什么是-10,即表示负数的二进制表示。
目前,计算机普遍使用补码来表示负数。
知道补码,求源码的方式是:值取反再加1。
补码的第一位符号位决定源代码正负,第一位以0源代码为正,第一位以1源代码为负。
在上面的示例中,9按位反转得到11110110,其第一位为1,源代码为负值。
反过来为00001001,再加上1则为00001010,其值为10,加上负号则为-10。
即~9=-10