在計算機中是使用二制數中的最高位表示來正負。 二進制的儲存中都是用的補碼,正數的原碼、反碼和補碼相同,負數的原碼是最高位為1,反碼最高位不變,其余各位取反,補碼為其反碼+1(重要!!)
首先得知道最高位是哪一位?1個字節的類型,如字符類型,最高位是第7位,2個字節的數,最高位是第15位,4個字節的數,最高位是第31位。
不同長度的數值類型,其最高位也就不同,但總是最左邊的那位(如下示意)。
字符類型固定是1個字節,所以最高位總是第7位。 (紅色為最高位) 單字節數: 1111 1111 雙字節數: 1111 1111 1111 1111 四字節數: 1111 1111 1111 1111 1111 1111 1111 1111 當我們指定一個數量是無符號類型時,那么其最高位的1或0,和其它位一樣,用來表示該數的大小。 當我們指定一個數量是有符號類型時,此時,最高數稱為“符號位”。為1時,表示該數為負值,為0時表示為正值
問:6的反碼為什么是-7?
答:
java整型是32bit運算
6的二進制是:
0000 0000 0000 0000 0000 0000 0000 0110
反碼是:
1111 1111 1111 1111 1111 1111 1111 1001 是個負數,因此計算機存放的時候是先反碼:
1111 1111 1111 1111 1111 1111 1111 0110
再加1:
1111 1111 1111 1111 1111 1111 1111 0111
所以答案是: -7
在計算機中,
負數
除為最高位為
1
以外,還采用補碼形式進行表達。