負數在記憶體中的表示,int型別取值範圍
阿新 • • 發佈:2019-02-15
在計算機系統中,數值一律用補碼來表示(儲存)。
主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理。另外,兩個用補 碼錶示的數相加時,如果最高位(符號位)有進位,則進位被捨棄。
(我們拿32位int型來講,首位是符號位,0表示正數,1表示負數,後面31位用來表示數值)
1.正數的補碼和原碼相同。
2.負數的補碼是對其原碼逐位取反,但符號位除外;然後整個數加1。
比如 -1這個數
原碼:1000 0000, 0000 0000, 0000 0000, 0000 0001
取反:1111 1111, 1111 1111, 1111 1111, 1111 1110
加1 :1111 1111, 1111 1111, 1111 1111, 1111 1111
上面最後結果就是-1的補碼
===============int取值範圍=============
-2^31 ~ 2^31-1
為什麼負數是 -2^31 而不是-2^31-1呢?
因為規定了1000 0000, 0000 0000, 0000 0000, 0000 0000這個特殊的數(本來是-0的)為-2^31,所以負數就多一個