java数据类型的小问题,在线等
java文件中
		int max=0x7fffffff;
		long lo=max+1;
		System.out.println(lo);
		lo=(max+1)*2;
		System.out.println(lo);
现问:第一个输出为什么会是-2147483648,第二个输出为什么会是0
thanks
------解决方案--------------------第一个是符号位溢出,第二个是int型溢出。
你直接看看:
       int a = 0x7fffffff;
       int b = 0x80000000;
       int c = 0xffffffff + 1;
       int d = 0x80000000 * 2;
       System.out.println(a);
       System.out.println(b);
       System.out.println(c);
       System.out.println(d);
2147483647
-2147483648
0
0
------解决方案--------------------对就是数据溢出的问题
------解决方案--------------------0x7fffffff的二进制0111 1111 1111 1111 1111 1111 1111 1111
max+1为:1000 0000 0000 0000 0000 0000 0000 0000即-2147483648最高位为符号位...
      *
其中1是  0000 0000 0000 0000 0000 0000 0000 0001
      ----------------------------------------
       0000 0000 0000 0000 0000 0000 0000 0000
故结果为0