读书人

java中左移要职溢出不舍去么?还有没有

发布时间: 2012-12-21 12:03:49 作者: rapoo

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

读书人网 >J2SE开发

热点推荐