当前位置: 技术问答>java相关
16进制整数显示的问题
来源: 互联网 发布时间:2015-08-28
本文导语: 我的程序中有一行 System.out.println(0x80001003); 我想的是0x80001003等于10进制的2147487747 应该显示2147487747; 结果显示的是-2147479549 请问这是为什么呢? | 超过了int的定义: -2147483648~2147483647 这样定...
我的程序中有一行
System.out.println(0x80001003);
我想的是0x80001003等于10进制的2147487747
应该显示2147487747;
结果显示的是-2147479549
请问这是为什么呢?
System.out.println(0x80001003);
我想的是0x80001003等于10进制的2147487747
应该显示2147487747;
结果显示的是-2147479549
请问这是为什么呢?
|
超过了int的定义:
-2147483648~2147483647
这样定义就没错了
long i= 0x80001003;
System.out.println("value: "+i);
-2147483648~2147483647
这样定义就没错了
long i= 0x80001003;
System.out.println("value: "+i);
|
hehe
兄弟,16进制可以直接赋值给int和显示出来是没有问题的
但是要注意,java是有符号的,无符号的值10进制的2147487747在java里面就变成有符号的-2147479549拉
兄弟,16进制可以直接赋值给int和显示出来是没有问题的
但是要注意,java是有符号的,无符号的值10进制的2147487747在java里面就变成有符号的-2147479549拉
|
哎,JAVA是用补码表示整型的,第一位为符号位,所以0x80001003本来就是个负数。变成正的在它前面加个-号不就得了。System.out.println(-0x80001003);