码迷,mamicode.com
首页 > 编程语言 > 详细

java中int取值范围是怎么计算的?

时间:2015-07-01 20:41:23      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:

首先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

版权声明:本文为博主原创文章,未经博主允许不得转载。

java中int取值范围是怎么计算的?

标签:

原文地址:http://blog.csdn.net/ylyanglei/article/details/46713131

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!