
【計】 base-minus-one's complement
在計算機科學和數字電路領域,反碼(Ones' Complement) 是一種二進制數的表示方法,主要用于數值的存儲、運算和錯誤檢測。以下是其詳細解釋:
反碼指對二進制數的每一位取邏輯反(即0變1,1變0)後得到的編碼形式。例如:
5
的4位二進制原碼為 0101
,其反碼為 1010
。-5
的反碼為 1010
(基于4位表示)。零的表示
反碼系統中存在兩種零的表示形式:
+0
:全0(如 0000
)-0
:全1(如 1111
)
這一特性可能導緻運算歧義。
加減法運算
反碼加減法依賴循環進位(End-Around Carry):
示例(4位):
$$5 + (-3) = 0101_2 + 1100_2 = 1 0001_2 xrightarrow{text{+1}} 00102 = 2{10}$$。
溢出處理
當運算結果超出表示範圍時,反碼系統可能産生錯誤值(如 -0
),需額外檢測。
曆史計算機系統
早期計算機(如PDP-1)采用反碼進行算術運算,但因零的冗餘和硬件實現複雜度,逐漸被補碼取代。
校驗機制
反碼求和廣泛用于網絡協議(如IP、TCP、UDP)的校驗和計算:
公式:
$$text{Checksum} = text{Ones' Complement}left(sum_{i=1}^{n} text{data}_iright)$$
中文術語 | 英文術語 |
---|---|
反碼 | Ones' Complement |
原碼 | Sign-Magnitude |
補碼 | Two's Complement |
循環進位 | End-Around Carry |
《計算機組成與設計:硬件/軟件接口》(David A. Patterson, John L. Hennessy)
詳解反碼運算原理及硬件實現。
IEEE标準754
對比反碼與補碼在浮點數表示中的差異。
RFC 1071: Computing the Internet Checksum
定義反碼求和在網絡校驗中的應用。
《數字邏輯基礎》(M. Morris Mano)
分析反碼在數字系統中的算術缺陷。
反碼(Ones' Complement)是計算機中表示有符號整數的一種二進制編碼方式,主要用于簡化減法運算。以下是詳細解釋:
0011
。1011
,反碼為1100
。0101
→ 反碼0101
。1101
→ 反碼1010
。1100
→ 補碼1101
。3 - 2
可轉換為 3 + (-2的反碼)
。反碼的數學表達式為: $$ text{反碼} = begin{cases} x & text{若 } x geq 0 (2^n - 1) + x & text{若 } x < 0 end{cases} $$ 其中,n為二進制位數。
反碼是理解補碼的重要基礎,雖然現代計算機普遍使用補碼,但反碼在特定領域(如網絡協議)仍有價值。
邊際替換率表示轉移語法蟲漆酸除蟲菊素出人意料從屬服務區電運作變阻器迪阿索耳端點電壓對核二苯并[cd,jk]芘-5,10-二酮反悔幹式化學滅火法高頻率電波格裡佐耳氏征婚姻登記冊卷焊式單層圓筒空置換闊颌的卵黃素鹵代烴模版目标級存取保護汽密的全電離的曲安西龍石灰鞣革統稱拓撲矩陣彎腳的