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

java中左移高位溢出不舍去么?还有没有节操啦
public class WY {
public static void main(String args []){
int i = 1<<31;
int j = 1<<32;
int p = 1<<33;

System.out.println("1左移31位"+i);
System.out.println("1左移32位"+j);
System.out.println("1左移33位"+p);

}
}

输出:1左移31位-2147483648
      1左移32位1
      1左移33位2
------最佳解决方案--------------------
首先这是溢出的表现 溢出是由于超出了范围 其数值的范围是最大值到最小值 而这些数可以看成一个圈 当出现溢出时就会找到下一个数字
------其他解决方案--------------------
你想表达啥?
int型变量为32位(w),左移量为k,实际位移为 k mod w的结果 = 33 % 32 = 1
1左移1位为2