2013-10-29 23 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