位移是否有限制?
public static void main(String args[])
{
int i=10;
System.out.println(i<<32);
}
输出为10
但我知道这不正确。
答案应为10 * 2 32 = 4.29 * 10 10
为什么会这样?
答案 0 :(得分:2)
是的,换档因子按以下方式模数:
char
,short
或int
。long
。答案 1 :(得分:1)
由于i
是int
,因此只使用了5个最低位。
32的最后5位是 0 :
您的计划相当于:
System.out.println(i<<0);
这不会改变数字。
如果您希望这项工作,则应使用long
代替。有关详细说明,请参阅this link。