這是一個非常基本的問題,但我從來沒有完全說服我自己,我的「沒有區別」直觀的答案是正確的,所以也許有人有一個好辦法,明白這一點:對於Java中的按位運算,我是否需要關心Java中的大多數數字類型是否被簽名?
如果我想要的在Java中使用其中一種基本數字類型是按位算術,我可以簡單地將它看作是無符號值還是需要避免負數,即將最高位始終設置爲0?例如,我可以使用int,就好像它是一個無符號的32位數字,或者我應該只使用最低的31位?
我在尋找一般答案儘可能,但讓我舉個例子:比方說,我想存儲32個標誌。我可以將它們都在單個int,如果我使用類似
store = store & ~(1 << index) | (value << index)
設置標誌index
到value
和類似
return (store & (1 << index)) != 0
檢索標誌index
?或者,如果我將index
設置爲1來標記此代碼或類似代碼,我是否會遇到任何問題?
我知道我需要總是使用>>>而不是>>來進行右移,但這是唯一的擔憂嗎?或者當我使用最高位時,是否會出現與負數的二進制補碼錶示相關的其他問題?
感謝您的好評。 –