1. 程式人生 > >負數在記憶體中的表示,int型別取值範圍

負數在記憶體中的表示,int型別取值範圍

在計算機系統中,數值一律用補碼來表示(儲存)。 

主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理。另外,兩個用補 碼錶示的數相加時,如果最高位(符號位)有進位,則進位被捨棄。

(我們拿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,所以負數就多一個