哪个位实际上移位<<运营商?

时间:2013-10-29 19:16:41

标签: java binary

我与一个在Java中提供算术移位<<>>的运算符混淆了

例如,我有这个二进制数:

   0000 0101 // It is actually 5 in dec system

现在我想把这个数字向左移2个位置。我这样做(这只是移位的概念):

 0000 0101 << 2

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

1 个答案:

答案 0 :(得分:4)

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

其他运营商是:

  • 签名右移(>>

    0011001&gt;&gt; 2 = 0000110
    1011001&gt;&gt; 2 = 1110110

    最左边的位用作左边距。这样做是为了传播符号位(最高位)。

  • 无符号右移(>>>

    1110001&gt;&gt; 2 = 0011100

    由于该数字被认为是无符号的,因此无需传播,只需用零填充!