java 中int 的范围

网上说java中int是32bit的,也就是说最大值是 2147483648-1,为什么我定义int a = 2147483648-1和long a = 2147483648-1的时候都提示我超出范围了呢??请高手再给我补补数据的范围吧,谢谢了,好的再给追加分。。。

int的取值范围为: -2^31——2^31-1,即-2147483648——2147483647

1、对于正数来说,它的补码就是它本身。

2、对于负数来说,它的补码是它对应的正数的二进数所有位取反之后加一。

3、由负数的补码求原码也是相同的操作(所有位取反+1)即为该负数的绝对值

int是4个字节,32位,

10000000 00000000 00000000 00000000  是补码,第一位为符号位,1表示负数,所以

对剩下的位取反,结果为 1111111 11111111 11111111 11111111,加一后为10000000 00000000 00000000 00000000

4、所以原码指的是-2^31=-2147483648

int的取值范围为-2^31——2^31-1

扩展资料

int是一个向CPU发送中断的指令。

格式为INT vec。

vec为中断向量号,其值为0~255。CPU根据这个向量号去调用内核对应的中断例程。指令操作为:

(SP)←(SP)-2,((SP)+1:(SP))←(FR)

(IF)←0,(TF)←0

(SP)←(SP)-2,((SP)+1:(SP))←(CS)

(SP)←(SP)-2,((SP)+1:(SP))←(IP)

(CS)←(vec*4+2),(IP)←(vec*4)

参考资料

百度百科-int



温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-03-02
java 中int 的范围:
数据类型 大小 范围 默认值

byte(字节) 8 -128 - 127 0
shot(短整型) 16 -32768 - 32768 0
int(整型) 32 -2147483648-2147483648 0
long(长整型) 64 -9233372036854477808-9233372036854477808 0
float(浮点型) 32 -3.40292347E+38-3.40292347E+38 0.0f
double(双精度) 64 -1.79769313486231570E+308-1.79769313486231570E+308 0.0d
char(字符型) 16 ‘ \u0000 - u\ffff ’ ‘\u0000 ’
boolean(布尔型) 1 true/false false本回答被网友采纳
第2个回答  2018-07-28
java中的int类型存储长度为32bit.所以范围是“-2^32”到“2^32-1”;
也就是“-2147483648”到“2147483647”;
第3个回答  2011-04-22
int是默认的整形数据,占4个字节,每个字节8位因次是32位,范围是-2的32次方~2的32次方-1,再有Long是8个字节就是64位了,因此你定义的时候一定要在后面加上'L';而浮点行的默认类型是Double,因此像定义Float是要在数据后面加上'F'
第4个回答  2011-04-22
常量的值只与本身有关,跟引用类型无关,所以,一旦数据超过int的范围,就需要在数据后面加'L'表示long型数据,再长了就只能用float(f)或者double(d)。