日期:2014-05-20  浏览次数:20716 次

关于位移操作的问题
为甚么System.out.println(1<<31);
     System.out.println(-1<<31);返回的结果一样,都是-2147483648呢?请教各位大神

------解决方案--------------------
1 的二进制表示为:
00000000 00000000 00000000 00000001,左移31位后是:
10000000 00000000 00000000 00000000 
其10进制表示是:
-2147483648

-1 的二进制表示是:
11111111 11111111 11111111 11111111,左移31位是:
10000000 00000000 00000000 00000000 
其10进制表示也是:
-2147483648

也就是说,1,-1左移31位后,值一样,都是-2147483648。
------解决方案--------------------
http://www.ticmy.com/?p=46