2012-09-20 60 views

回答

1

如果它的有符號整數(它的最高有效位)用作其符號位。如果符號位爲0,則數字爲正數。如果符號位爲1,則該數字爲負數,並以2的補碼形式表示,編譯器執行2的補碼操作來處理這些負數整數。

但是,在無符號整數被明確聲明爲「無符號整型」的情況下,沒有符號位,也沒有2的補碼解釋。

因此對於帶符號的8 bin int 11111011是5的2的補碼,因此代表-5,但對於無符號8位int 11111011是251,如您所述。

1

你不能!這是許多語言簽署和未簽名類型的原因。編譯器/解釋器知道是否將二進制值解釋爲有符號(二進制補碼)或無符號二進制值。

4

他們都沒有。 11111011只是一個位模式 - 它只會在某些操作(如算術)中使用某種內在意義。

根據您使用的操作,解釋可能不同或不同 - 使用2的補碼的原因是例如,在整數運算中,無論將其解釋爲有符號還是無符號,操作的位模式結果都是正確的。

1

爲了更好地瞭解兩補看看比特串的Wikipedia page

的解釋取決於誰是要使用這些數據的說明。如果您將變量聲明爲無符號位,則將該位解釋爲常規二進制數。否則,如果您將其聲明爲有符號變量,則它將被解釋爲二進制補碼值。