Base-10 の自己補完コードは、指定されたエンコードされた数字d [0-9] の補数が、9 の補数である9-dになるコードです。
Base-10 の数値をバイナリでエンコードするには、10 個の値 [0-9] を表現できる必要があります。つまり、3 ビットで 8 つの値を表現できるため、4 ビットが必要です。これでは十分ではありません。4 ビットで 16 個の値を表すことができますが、これは必要以上ですが、小数ビットがありません (または必要ありません)。
これらの 4 ビット内で可能なエンコード方式は数多くありますが、最も直感的なのは 8-4-2-1 方式、つまり 10 進数値のストレート バイナリ エンコードです。8-4-2-1 を使用して 12 をエンコードするには、[1] と [2] をそれぞれのバイナリ表現 [0001] と [0010] として別々にエンコードします。
9 の補数は、10 進数/Base-10 の数値をバイナリ エンコードする場合に関連します。9 は、Base-10 の数値をエンコードするときに必要な最大値だからです。
あなたの例は、9の補数ではなく15の補数を正しく生成している、10進数として表示されるBase-16を意味します。8-4-2-1 は直感的に Base-16 の自己補数コードです。4 桁の 2 進数の補数を取ることは、15 からそれを引くことと同じだからです。
同じ方法で表現された Base-10 数についても同じことは言えません。なぜなら、16 個のメンバー コード空間で 10 個の値しか表現していないためです。 4 桁の 2 進数の 10 進数。
ここの表 13.1: [ http://www.inf.fu-berlin.de/lehre/WS00/19504-V/Chapter1.pdf ] は、10 進数エンコードの 2 つの自己補完コード、つまり 8,4,-2, -1 およびexcess-3 エンコーディング スキーム、および後続のセクションでは、自己補完コードの背後にある目的と理論について説明します。