為什么對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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM