二補數計算機

將帶符號十進位數或二進位位元模式轉換為 4、8、16 或 32 位元二補數表示。

計算二補數
輸入帶符號十進位整數,或以 0b 開頭的二進位數。

範例:-5 或 0b11111011

關於二補數

二補數是現代電腦表示帶符號整數的標準方式。它使用固定數量的位元,並賦予最高位元負的位值權重。因此,8 位元模式可表示 -128 到 127;同樣的八個位元也能解讀為 0 到 255 的無符號數,所以交換或顯示二進位資料時,解讀方式十分重要。 正數與一般二進位數相同,只需在前方補零。手動建立負數時,先以選定寬度寫出正的絕對值,再將每個位元反相並加一。例如,十進位 5 的八位元表示為 00000101,反相得到 11111010,加一得到 11111011,也就是 -5 的八位元表示。本計算機透過以 2 的位元寬度次方為模數的運算得到相同答案。 位元寬度是數值表示的一部分。負五在四位元下為 1011,八位元下為 11111011,十六位元下為 1111111111111011。擴展帶符號負數時會重複前導的一,稱為符號擴展;擴展正數則重複前導零。若捨棄的是有效位元,縮減位元數就會改變數值,因此本計算機拒絕超出所選帶符號範圍的十進位數。 解讀位元模式時,先查看最高位元。若為零,帶符號與無符號解讀相同;若為一,則從無符號值減去 2 的位元寬度次方。因此,11111011 的無符號值為 251,而 251 - 256 得到帶符號值 -5。此規則通常比反向執行反相加一更快。 二補數具有實用的算術特性。帶符號與無符號數的加減法可使用同一個二進位加法器,溢位則依情境處理。與一補數不同,二補數的零只有一種表示。其範圍不對稱,多一個負數,因為零占用了一個非負位元模式。 本計算機適用於電腦架構、數位邏輯、嵌入式程式設計、網路協定、除錯與離散數學。選定的寬度應符合研究中的系統或資料型別。沒有位元寬度及符號屬性的位元模式資訊並不完整,採用不同慣例解讀可能得到完全不同的十進位結果。

二補數範例

十進位數與位元寬度二進位位元模式說明
-5,8 位元11111011將 00000101 反相後加一。
-8,4 位元1000這是四位元帶符號整數的最小值。
42,8 位元00101010正數使用以零補齊的一般二進位表示。

如何使用二補數計算機

  1. 輸入帶符號十進位整數,或帶有 0b 前綴的二進位位元模式。
  2. 選擇目標系統使用的位元寬度。
  3. 選擇「計算二補數」。
  4. 比較二進位、帶符號十進位及無符號十進位的解讀。

二補數常見問題

為什麼位元寬度很重要?

寬度決定模數與帶符號數範圍。同一數值需要不同的補位方式,在較小寬度下可能無法表示。

八位元能表示什麼範圍?

八位元二補數整數範圍是 -128 到 127,其位元模式的無符號範圍為 0 到 255。

如何將二進位數取負?

在固定寬度內,將每個位元反相後加一。除了最小可表示整數這個特殊情況外,再執行一次會回到原值。

為什麼帶符號與無符號結果不同?

兩者賦予最高位元不同的位值意義。儲存的位元相同,但解讀方式不同。

二補數有負零嗎?

沒有。零只有全零這一種表示,這是相較於符號大小表示法和一補數的重要優點。