給定一個 8 位元有號數原碼 11001010,如何快速正確求出其補碼?本文逐步拆解流程,並提供通用口訣與驗證技巧。
1 10010101(負數)1001010(十進制 74)11001010 → 0110101
0110101
+ 1
---------
0110110
1 0110110原碼 11001010 的補碼為 10110110
11001010 (原碼 -74)
+ 10110110 (補碼 -74)
-----------
1 00000000 → 第 9 位溢位捨棄,結果 00000000 ✓
| 錯誤做法 | 正確做法 |
|---|---|
| 符號位也參與取反 | 符號位永遠不動 |
| 忘記加 1,停留在反碼 | 反碼必須 +1 得補碼 |
| 二進制加法進位錯誤 | 逢二進一,逐位驗算 |
int8_t original = 0xCA; // 11001010
int8_t twos_complement = -original; // 編譯器自動生成補碼取負指令
// 或手動:
int8_t tc = (~original) + 1; // 位元取反 + 1
原碼轉補碼是計算機組成原理的基本功,掌握「符號位不動、數值位反碼加一」核心規則,配合模運算驗證,即可秒殺各類考題與實際除錯場景。