二進制數的反碼(英語:1's complement)是指將二進制數每個數字反轉得到的數:若某一位為0,則使其變為1,反之亦然。[1]

「一補數」的各地常用名稱
中國大陸反碼、一的補碼
臺灣一補數
港澳一補碼
8位數值的原碼與反碼進行計算
轉換為十進制所得真值比較
原碼 將符號位作為有
實際含義的位所得值
用反碼表示
所得值
0111 1111 127  127 
0111 1110 126  126 
0000 0010 2  2 
0000 0001 1  1 
0000 0000 0  0 
1111 1111 255  −0 
1111 1110 254  −1 
1111 1101 253  −2 
1000 0001 129  −126 
1000 0000 128  −127 

反碼表示法(英語:1's complement system)是一種在計算機中用機器碼表示有符號數的方式之一,其中正數使用原碼,負數使用反碼。該表示法常簡稱反碼

  • 一補數以有符號位元的二進位數定義。[需要解釋]
  • 一補數是有符號位元的二進位數。[需要解釋]
  • 正數和0的一補數就是該數字本身。

一補數在很多算術運算中的表現與這個數的相反數很相似,此特性可使加法電路同時可以運算減法。然而,由於一補數中存在多餘的負零和其它問題,此方式並未像二補數一樣被廣泛應用。

表示方式 編輯

使用反碼表示有符號數的方法如下

 

式中,N為真值,n為編碼的位數。

顯然,正數的反碼等於其原碼,而負數的反碼則可以通過保留其符號位,將原碼的數值位取反得到。

例如,使用4個二進制位時,+3是0011,用一補碼表示-3便是1100。下表列出了4-bit二進數所能表示的整數。

二進位數 無符號位元 有符號位元 為一補碼時 為二補碼時
0000 0 0 0 0
0001 1 1 1 1
0010 2 2 2 2
0011 3 3 3 3
0100 4 4 4 4
0101 5 5 5 5
0110 6 6 6 6
0111 7 7 7 7
1000 8 -0 -7 -8
1001 9 -1 -6 -7
1010 10 -2 -5 -6
1011 11 -3 -4 -5
1100 12 -4 -3 -4
1101 13 -5 -2 -3
1110 14 -6 -1 -2
1111 15 -7 -0 -1

相關條目 編輯

參考資料 編輯

  1. ^ M Morris Mano; Michael D Ciletti. Digital design : with an introduction to the verilog hdl. 培生教育. 2013: 第27頁. ISBN 9780273764526.