int型的數到底最大值是多少?


本文摘自:http://blog.csdn.net/friendbaby/article/details/6822690

  剛才在百度知道上看見一個網友問int型的數最大能存多少。這個問題其實計算機系統結構里有講解。

  首先,我們要知道在計算機里怎么存儲數字的。在計算機里,對數字編碼有3種方式:原碼、補碼、反碼。原碼其實就是10進制數直接轉2進制數的結果。比如:十進制的18,在二進制里是10010。那這里的10010就是原碼。我們可以sizeof一下我們自己的電腦上int型占幾個字節。我的是4個字節,也就是說只有32個位。如果一個十進制數轉位二進制數位數大於32,就溢出,其實也就是存不下了。

 
    我們存數不僅僅有正數還有負數,在計算機里如何區分正數負數?我們規定最高位是符號位。為0是正,為1負。所以最高位是不可以參加計算的。比如二進制數1000最高位是符號位的話,轉十進制不是8,而是-0,對就是負0(正0的二進制形式是0000)。如果給一個十進制形式的負數,如何計算它的補碼?
  1.計算這個數絕對值的二進制表示。
  2.把2^n寫成二進制形式減去這個數,得到的就是補碼。
比如:-5,
   1. 5的二進制形式是:0101.最高位是符合位,為0是正。
   2. 1111-101,二進制的減法,補碼就是1010.最高位是符合位,為1是負。
 
  反碼不常用,我沒有細心學。
 
  所以,int占32位的時候,最大可以賦值為:2147483647。也就是0x7fffffff。注意:7的二進制形式最高位為0,如果你對2147483647+1.輸出的就是-2147483648。這個數是負數中最大的數,也就是int型可以表示的最小的負數。它的十六進制表示為:0x8fffffff,8的二進制形式最高位是符號位,是1,為負。


免責聲明!

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



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