两个的移位会以移动出去的数字补位,int类型整数是32位。
100移动64位刚好是循环回来,所以值还是100。
我把移位完整的打印出来,代码是
class Demo {
public static void main(String[] args) {
for(int x=1;x<=32;x++)
{
System.out.println("当X="+x+"时");
int b=100<<x;
System.out.println(Integer.toBinaryString(b));
System.out.println(b);
System.out.println(x);
}
}
}
结果当移位26位,即第一次首位是1移出去的时候后面是补0,所以左移30或者31都是0,因为所得的数是32个0; |
|