2013-10-29 24 views
2

我与运营商提供算术移位<<>>迷糊中的Java哪位实际移动<<运算符?

例如,我有这样的二进制数:

0000 0101 // It is actually 5 in dec system 

,现在我想2个职位,以这个数字左移。我这样做(这只是换挡位的概念):

0000 0101 << 2 

现在我不知道:如果我需要高位2个职位在右侧OR我转移和填充零需要将整数(101)移位2个位置

回答

4

第二个选项:)
例如,0110001 << 2 = 1000100

的其他运营商有:

  • 签署右移(>>

    0011001 >> 2 = 0000110
    1011001 >> 2 = 1110110

    最左边的比特被用作左填充。这是为了传播符号位(最高位)。

  • 无符号右移(>>>

    1110001 >> 2 = 0011100

    由于数量被认为是无符号,没有什么传播,只是用零垫!

+0

确定吗?因为我正在做一个程序,当我将任何有限整数传递给我的变量时,它计算Int类型(32位)中剩余的位数; – Ernusc

+0

如果你左移高位,它会消失(因为它是最高的,它不能更高)。当最高位变成最低位时,你可能意味着桶转移,但这不是计算机科学中的经典转换操作(更多用于数字电子)。 –

+0

所以如果我有一个数字101,我需要将它移动2个位置,所以我最后的'1'(它实际上是10 [1])向左移动2个位置,结果是:1000? – Ernusc