2015-09-14 17 views
3

比方說,我在java中下面的代碼在Java中與字節進行OR操作的問題?

byte t = (byte) 0b10001000; 
byte z = 0b00000000; 
z = (byte) (t|z); 

你會認爲輸出是10001000,但它最終的字符串表示是-1111000, - 號是當然的第一1,使得它11111000.如果我做相同的代碼,但最後一位在Z中作爲1,例如00000001和我執行相同的操作,我得到-1110111或11110111.我認爲這是由於負符號字節t的轉換問題。有什麼辦法可以避免這種情況?有沒有什麼辦法讓01000000在OR操作中的工作與01000000相同?

回答

3

Java沒有無符號類型,所以當你使用二進制notaion並設置標誌,你希望;-)

爲了模擬,你需要在接下來的大小工作無符號類型有點事情不會去向上。

+0

你能提供一個例子嗎?有沒有辦法使用按位運算正確處理第8位? – Bigsuga

+0

只需將您的類型更改爲int並刪除字節轉換。 - 很多谷歌的例子(和S.O.) – John3136

+0

太棒了,謝謝! – Bigsuga