java中int取值范圍是怎么計算的?


首先jdk中定義int占4個字節 ===> 32位(后面全部的計算都是以此為根據的)

32位就是jvm僅僅給分配32個格子的空間,用以存放數據。

總所周知計算機中用0和1存放數據。

那么,32個格子中放滿0或1的方法 有2的32次方種:

所以。這32個格子中。或者說32位的空間能標識10進制的數字:

最小

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
最大

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

第一種推算法:將二進制最大的數字(32個1)轉換成10進制,即 4294967296;

另外一種推算法:既然有2的32次方種算法,那么依照10進制最大的數就是2的32次方。即4294967296;


可惜。上面這樣的計算的是無符號。即正數。可是java中int有正負之分。所以32個格子中占用一個格子標識正負。

所以僅僅能用31個格子來標識數值。

下圖:

X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
x為0 1來標識正負。


最后int能標識的最大/最小數字是:2的31次方:+/- 2147483648


免責聲明!

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



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