java中长整型定义int x=0x80000000;System.out.println(x);long y=0x100080000000;System.out.println(y);这样定义为什么不行编译时候错误:test.java:17:过大的整数:100080000000long y=0x100080000000;long不是64位吗,这样y应该
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 22:20:32
![java中长整型定义int x=0x80000000;System.out.println(x);long y=0x100080000000;System.out.println(y);这样定义为什么不行编译时候错误:test.java:17:过大的整数:100080000000long y=0x100080000000;long不是64位吗,这样y应该](/uploads/image/z/11300143-31-3.jpg?t=java%E4%B8%AD%E9%95%BF%E6%95%B4%E5%9E%8B%E5%AE%9A%E4%B9%89int+x%3D0x80000000%3BSystem.out.println%28x%29%3Blong+y%3D0x100080000000%3BSystem.out.println%28y%29%3B%E8%BF%99%E6%A0%B7%E5%AE%9A%E4%B9%89%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E8%A1%8C%E7%BC%96%E8%AF%91%E6%97%B6%E5%80%99%E9%94%99%E8%AF%AF%EF%BC%9Atest.java%3A17%3A%E8%BF%87%E5%A4%A7%E7%9A%84%E6%95%B4%E6%95%B0%EF%BC%9A100080000000long+y%3D0x100080000000%3Blong%E4%B8%8D%E6%98%AF64%E4%BD%8D%E5%90%97%2C%E8%BF%99%E6%A0%B7y%E5%BA%94%E8%AF%A5)
java中长整型定义int x=0x80000000;System.out.println(x);long y=0x100080000000;System.out.println(y);这样定义为什么不行编译时候错误:test.java:17:过大的整数:100080000000long y=0x100080000000;long不是64位吗,这样y应该
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中长整型定义int x=0x80000000;System.out.println(x);long y=0x100080000000;System.out.println(y);这样定义为什么不行编译时候错误:test.java:17:过大的整数:100080000000long y=0x100080000000;long不是64位吗,这样y应该
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位的实体.