差分
2の補数
,/* 補足 */
== 2の補数とは ==
|-
|}
== ワード・バイト・ビットの単位とレジスタ ==
{|class="wikitable"
|+ ビット状態と正10進数との対応
|-
|4ビットの状態
|サインなし
それ以外のビットは正の値とします。
ですので ''1111'' は -8 + 7 = -1 となります。
2の補数では次のようになります。 {|class="wikitablesortable" |+ ビットパターンで並べるビット状態と正負10進数の対応|!4ビットの状態|整数!!10進数表現
|-
|0000
|}
== 2の補数を使っての加算 ==
4ビットレジスタで1と-1を加算してみましょう。
1はビット表現では0001です。-1はビット表現では1111です。
0001と1111を加算すると2進数では10000です。
0000は0です。よって1に-1を加えた結果は0になることがわかります。
0111と1100を加えると2進数10011となりレジスタの内容は0011となります。
0011は3です。7 + (-4) = 3 ですので同じだといことがわかります。
== 加算器と2の補数 ==
* OR どちらかの入力ビットに1があれば1
* XOR 入力ビットが異なれば1、同じであれば0
では2ビット以上の加算器<ref>暗黙の了承としてビックエンディアンとします。</ref>を考えてみましょう。ここではまず01 + 01 の加算を考えてみます。
まず最初のビットは 1 + 1 です。ビットは0になります。次のビットに1を繰り上げます。です。加算後のビット<ref>加算後の値のことをSumといいます。</ref>は0になります。そして次のビットに1を繰り上げ<ref>繰り上げのことをCarryといいます。</ref>ます。この回路のことをHalf Adderと呼びます。ビット演算回路で示すと下記のAdderと呼びます。ビット演算回路で示すと下記の「'''Half Adder'''の図のようになります。の図」のようになります。
次のビット以降は下から繰り上がってきたビットも含めて計算することになります。
この回路のことをFull Adderと呼びます。ビット演算回路で示すと下記のAdderと呼びます。ビット演算回路で示すと下記の「'''Full Adder'''の図のようになります。の図」のようになります。
|-
|}
=== 4ビット加算器 ===
{| class="wikitable" style="text-align: center; "
|[[File:Twocomp-fig4.png|center|300px500px]]
Half AdderとFull Adderを組み合わせ4ビット加算器を作る。
|-