java中长整型定义

int x=0x80000000;
System.out.println(x);
long y=0x100080000000;
System.out.println(y);
这样定义为什么不行
编译时候错误:
test.java:17: 过大的整数: 100080000000
long y=0x100080000000;
long不是64位吗,这样y应该才48位啊~~
还有0x8000,0000到底是多少
写成二进制不是应该
1000,0000,0000,0000,0000,0000,0000,0000
如果最高位算符号位的话,那不是变成0了???
-2147483648是怎么来的?
0x7fff,ffff是2147483647难道十六进制加了1换成十进制也加1在变符号?

java整型有四种分贝是:byte(1字节)、short(2字节)、int(4字节)、long(8字节)

0x100080000000超出范围,其实不是long不能保存这么大,而是这个数是个int型数。它超出的其实是int的范围(The literal 0x100080000000 of type int is out of range),在整数赋值时。

可以将赋值语言修改如下,指定它的类型为long型就可以了 :

long y=0x100080000000l;//

扩展资料

java整形与长整型之间的转换可以借助Long类或字串

1、借助Long类:

int new_a = new Long(a).intValue();

2、借助字串:

int new_a = Integer.parseInt(String.valueOf(y));

java整形、长整型、浮点型 边界值:

int型边界最大值:Integer.MAX_VALUE

int型边界最小值:Integer.MIN_VALUE

long型边界最大值:Long.MAX_VALUE

long型边界最小值:Long.MIN_VALUE

float型边界最大值:Float.MAX_VALUE

float型边界最小值:Float.MIN_VALUE


温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-07
java整型有四种:byte(1字节),short(2字节),int(4字节),long(8字节)

0x100080000000 之所以超出范围,并不是long不能保存这么大,而是这个数是个int型数,所以当然超出了int范围(The literal 0x100080000000 of type int is out of range),在整数赋值时,右边默认都是int型,这时你将赋值语句修改为:
long y=0x100080000000l;//(最后一个是小写L)指定它的类型为long型就可以了
JVM资料:The JVM operand stack and local variables are defined to hold 32-bit values. So 64-bit long values that are stored on the operand stack or in local variables must be represented as two 32-bit entries.

意思是JVM 操作数栈及本地变量都定义成32位的值,所以存储在操作数栈或本地变量里的64位的long数值都必须被表示为两个32位的实体。本回答被提问者采纳
第2个回答  推荐于2017-09-07

Java的整型最大值/长整型和短整型最大值及表示法定义代码:

public class Damon
{
public static void main(String args[])
 {
    long long_max=java.lang.Long.MAX_VALUE;//得到长整型的最大值。
    int int_max=java.lang.Integer.MAX_VALUE;//得到整型的最大值。
    short short_max=Short.MAX_VALUE;//得到短整型的最大值。
    byte byte_max=Byte.MAX_VALUE;//得到Byte型最大值。
    System.out.println("LONG最大值:"+long_max);
    System.out.println("INT最大值:"+int_max);
    System.out.println("SHORT最大值:"+short_max);
    System.out.println("BYTE最大值:"+byte_max);
 }
}

代码定义后输出结果:

LONG最大值:9223372036854775807

INT最大值:2147483647

SHORT最大值:32767

BYTE最大值:127

第3个回答  2009-12-28
-2147483648是怎么来的?已经超过了int31位了,当一旦超过就会变成最小的值,好像是取反的操作造成的吧。
相似回答