差分

移動先: 案内検索

2の補数

181 バイト追加, 2016年5月15日 (日) 17:16
/* 加算器と2の補数 */
1ビットだけの加算を考えると次のようになります。
 
{|
|-
|}
 
1+1が0なのは桁あふれだからです。この加算はXORのビット演算をしているのと同じです。
ですので、1ビットレジスタで加算はXORの回路と同等です('''A XOR B → S'''の図)。
 
{| class="wikitable" style="text-align: center; "
=== Half Adder と Full Adder ===
 
では2ビット以上の加算器<ref>暗黙の了承としてビックエンディアンとします。</ref>を考えてみましょう。ここではまず01 + 01 の加算を考えてみます。
 
まず最初のビットは 1 + 1 です。ビットは0になります。次のビットに1を繰り上げます。
この回路のことをHalf Adderと呼びます。ビット演算回路で示すと下記の'''Half Adder'''の図のようになります。
 
次のビット以降は下から繰り上がってきたビットも含めて計算することになります。
この回路のことをFull Adderと呼びます。ビット演算回路で示すと下記の'''Full Adder'''の図のようになります。
|-
|}
 
 
=== 4ビット加算器 ===
最後の繰り上がりビットは無視され、どこにも影響をあたえません。
図4{| class="wikitable" style="text-align: center; "|[[File:Twocomp-fig4.png|center|300px]]Half AdderとFull Adderを組み合わせ4ビット加算器を作る。|-|}
2の補数を使うと加算器で正の値と負の値を混在させ計算することが可能になります。このように2の補数を使うと加算器で整数(正の値と負の値)を計算することが可能になります。