java中的負數的問題


在計算機中是使用二制數中的最高位表示來正負。 二進制的儲存中都是用的補碼,正數的原碼、反碼和補碼相同,負數的原碼是最高位為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

以外,還采用補碼形式進行表達。


免責聲明!

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



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