位移是否有限制?

时间:2014-02-16 13:25:26

标签: java bit-manipulation

位移是否有限制?

public static void main(String args[])
{
   int i=10;
   System.out.println(i<<32);
}

输出为10

但我知道这不正确。

答案应为10 * 2 32 = 4.29 * 10 10

为什么会这样?

2 个答案:

答案 0 :(得分:2)

是的,换档因子按以下方式模数:

  • 32,如果移位的操作数的类型是charshortint
  • 64,如果移位的操作数的类型是long

答案 1 :(得分:1)

由于iint,因此只使用了5个最低位。

32的最后5位是 0

您的计划相当于:

System.out.println(i<<0);

这不会改变数字。

如果您希望这项工作,则应使用long代替。有关详细说明,请参阅this link