为什么对1取反为-2?
Posted tigerlion
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么对1取反为-2?相关的知识,希望对你有一定的参考价值。
为什么对1取反为-2?
int i =5;
// ~i = -6
int j = 1;
// ~j = -2
为什么?
——原来计算机中带符号的整数以二进制的补码进行存储。
参见:
http://www.cnblogs.com/dolphin0520/archive/2012/10/09/2711768.html
从原码/补码的角度来看,就清楚了。
1 | ||||
---|---|---|---|---|
原码 | 00000000 | 00000000 | 00000000 | 00000001 |
取反 | 11111111 | 11111111 | 11111111 | 11111110 |
-2 | ||||
原码 | 10000000 | 00000000 | 00000000 | 00000010 |
反码 | 11111111 | 11111111 | 11111111 | 11111101 |
补码 | 11111111 | 11111111 | 11111111 | 11111110 |
5 | ||||
原码 | 00000000 | 00000000 | 00000000 | 00000101 |
取反 | 11111111 | 11111111 | 11111111 | 11111010 |
-6 | ||||
原码 | 10000000 | 00000000 | 00000000 | 00000110 |
反码 | 11111111 | 11111111 | 11111111 | 11111001 |
补码 | 11111111 | 11111111 | 11111111 | 11111010 |
以上是关于为什么对1取反为-2?的主要内容,如果未能解决你的问题,请参考以下文章