java整形數值表示---補碼的由來

 java整形數值表示--基礎 中說明了符號數採用補碼錶示法帶來的優勢,可是並無說明補碼是如何推導過來的。java

假設整形數值最多8位數,當採用無符號數表示法時,數值範圍爲0~255,而採用有符號數表示法時,可將128-255映射爲-128~-1,而0-127保持不變,來表示數值範圍-128~127:spa

128=1000_0000~-128.net

129=1000_0001~-127blog

130=1000_0010~-126get

...基礎

255=1111_1111~-1二進制

0=0000_0000~0方法

1=0000_0001~1ps

....tar

127=0111_1111~127

實際上這種方法叫作補碼錶示法,例如給定一個負數-100須要獲得它的補碼須要將255-100+1=156~1001_1100。直觀看來首位只要爲1即爲負數,而0則爲正數,但不能簡單的認爲首位是符號位:

例如假設要表示-5~4之間的10個數,能夠用0~9之間的5~9來表示-5~-1,而0~4保持不變,即:

5~-5

6~-4

7~-3

8~-2

9~-1

0~0

1~1

2~2

3~3

4~4

所以首位大於等於5的表示負數,而小於等於4的表示正數。這也說明了對於二進制而言,千萬不要簡單的將首位理解爲符號位。

相關文章
相關標籤/搜索