有人告訴我,一個符號字節轉換爲Java中的無符號字節,我們可以用公式使用公式將帶符號字節轉換爲無符號字節int unsignedByte = signedByte> = 0? signedByte:256 + signedByte;
int unsignedByte = signedByte >= 0 ? signedByte : 256 + signedByte;
但舉例來說,如果我有一個從-128 1(字節值範圍的signedByte值至127),並且我使用這個公式,所以1 >= 0
的計算結果爲true
,因此使用第一表達,導致1 + 1
,其等於2
。但是我期待在unsignedByte中使用129表示相同的數字嗎?
是不是有什麼毛病我的理解還是這個公式是錯誤的?
一個例子與實際符號和無符號值,將不勝感激!
所以如果我有一個符號字節具有值1,signedByte> = 0的計算結果爲真,則INT UnsignedByte的= 1?但我認爲int unsignedByte應該等於129? – Thor
*「unsignedByte = 1?但我認爲int unsignedByte應該等於129?」*不,這是錯誤的。見:https://en.wikipedia.org/wiki/Two%27s_complement –
爲安全起見,你總是可以把'256 + signedByte'在括號,從而消除所有posssible懷疑。 –