| 編碼 | 正數 | 負數 |
|---|---|---|
| 原碼 | 符號位 0 + 絕對值二進制 | 符號位 1 + 絕對值二進制 |
| 反碼 | 同原碼 | 符號位 1,其餘位取反 |
| 補碼 | 同原碼 | 反碼 + 1 |
+7 原碼: 00000111 反碼: 00000111 補碼: 00000111 -7 原碼: 10000111 反碼: 11111000 補碼: 11111001
例:11111010 → 取反 00000101 (5) → -5 - 1 = -6。
int a = 232; // 二進制: 00000000 00000000 00000000 11101000
byte b = (byte) a; // 截取低 8 位: 11101000
// 最高位 1 → 負數補碼
// 取反: 00010111 (23) → -23 - 1 = -24
System.out.println(b); // -24

Java 基本型別皆為有號補碼表示,強轉時直接截取低位,若最高位為 1 則解讀為負數。