2011-08-07 29 views
2

我的位掩碼是字節,我想保持它們完全一樣,但我認爲它們是符號擴展。我不關心這個字節是正值還是負值,只要它設置了相同的位。我只花了幾個小時來調試我的代碼,然後發現我的字節位掩碼只有在出現負面情況時纔出現問題,需要一段時間才能找到。我不能是唯一一個對此有問題的人。有沒有辦法讓一個字節像沒有簽名一樣?如何避免Java中的符號擴展位掩碼?

+0

您可以使用較大的整數類型。 –

+2

你應該發佈有問題的代碼。 –

回答

1

你的代碼有右移嗎?你使用'>>'而不是'>>>'嗎?有你的問題。

+0

是的,我用>>,所以你說我應該用>>>?我會檢查它。 –

+0

問題解決了,謝謝! –

5

如果您不希望字節在算術(或按位)運算符中使用時進行符號擴展,則需要明確按位 - 並使用0xFF。它看起來有點醜陋,但是如果你有什麼是byte(並且希望一個體面的JIT能夠識別這個習慣用語,並且無論如何都有效地使用代碼),這是不可避免的。

+0

我想這就是我必須做的。 –