首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

原碼轉補碼實戰:11001010 的補碼推導與驗證

     編輯:程式設計綜合問答

給定一個 8 位元有號數原碼 11001010,如何快速正確求出其補碼?本文逐步拆解流程,並提供通用口訣與驗證技巧。

題目資訊

  • 原碼:1 1001010
  • 符號位:1(負數)
  • 數值位:1001010(十進制 74)

標準轉換步驟

  1. 符號位保持不變:1
  2. 數值位按位取反(得反碼):
    1001010 → 0110101
  3. 反碼 + 1(得補碼):
      0110101
    +        1
    ---------
      0110110
  4. 組合符號位:1 0110110

最終結果

原碼 11001010 的補碼為 10110110

快速口訣:「負數補碼 = 反碼加一,符號位不動」

  • 正數:原碼 = 反碼 = 補碼
  • 負數:數值位取反 → 加 1 → 符號位置 1

驗證技巧:補碼加原碼應得 0(模 256)

  11001010  (原碼 -74)
+ 10110110  (補碼 -74)
-----------
1 00000000  → 第 9 位溢位捨棄,結果 00000000 ✓

常見錯誤提醒

錯誤做法正確做法
符號位也參與取反符號位永遠不動
忘記加 1,停留在反碼反碼必須 +1 得補碼
二進制加法進位錯誤逢二進一,逐位驗算

擴展:程式碼實現(C/C++)

int8_t original = 0xCA; // 11001010
int8_t twos_complement = -original; // 編譯器自動生成補碼取負指令
// 或手動:
int8_t tc = (~original) + 1; // 位元取反 + 1

結語

原碼轉補碼是計算機組成原理的基本功,掌握「符號位不動、數值位反碼加一」核心規則,配合模運算驗證,即可秒殺各類考題與實際除錯場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved