C语言中常见 ~Number ,怎么计算?
计算一个数字的 ~number
- 比如说现在有 A=60
- 所谓~,就是我们要找到那个负数的补码值等于这个数字的取反。
- 那么A 的8位二进制数 就是 0011 1100
- 那首先要计算 ~A 即 ~60 , 那么先取反
- 即 1100 0011 。
- 因为 负数的补码是 取反+1。
- 所以此处逆向操作需要 -1 取反
- 即 1100 0011 -1 == 1100 0010 (第一步逆向操作)
- 1100 0010 =>取反=> 00111101 => 十进制的 61
- 最后结果 A == 60 , ~A = -61
- C 语言中 ~60 == -61
计算~0
- 0 的补码
- 0000 0000
- 取反 1111 1111
- 逆操作 -1 => 1111 1110
- 取反 => 0000 0001
- 即 1
- 又因此处 是取反 负数 即 ~0 == -1
任意数
- B=x
- ~B= x二进制 =>取反 => 减1 => 再取反 => 转化为 10 进制的负数