logo

1の補数を使用した加算と減算

前のセクションでは、1 の補数、2 の補数、9 の補数、10 の補数などのさまざまな補数について学習しました。このセクションでは、1 の補数を使用して加算や減算などの算術演算を実行する方法を学習します。 1、2、9、10 の補数を使用して加算と減算を実行できます。

1の補数を使った加算

2 つの 2 進数を加算する場合、次の 3 つの異なるケースが考えられます。

ケース 1: 正の数の方が大きい場合に、正の数と負の数を加算します。

最初に、指定された負の数の 1 の補数を計算します。与えられた正の数と合計します。エンドアラウンドキャリー 1 を取得すると、それが LSB に追加されます。

例: 1101 と -1001

  1. まず、負の数 1001 の 1 の補数を求めます。したがって、1 の補数を求めるには、すべての 0 を 1 に、すべての 1 を 0 に変更します。数値 1001 の 1 の補数は 0110 です。
  2. 次に、両方の数字、つまり 1101 と 0110 を追加します。
    1101+0110=1 0011
  3. 両方の数値を加算すると、エンド アラウンド キャリー 1 が得られます。このエンド アラウンド キャリーを 0011 の LSB に追加します。
    0011+1=0100

ケース 2: 負の数の方が大きい場合に、正の値と負の値を加算します。

最初に、負の値の 1 の補数を計算します。それを正の数で合計します。この場合、エンドアラウンドキャリーは取れませんでした。したがって、結果の 1 の補数を取得して最終結果を取得します。

注: 結果は負の値になります。

例: 1101 と -1110

  1. まず、負の数 1110 の 1 の補数を見つけます。したがって、1 の補数を見つけるために、すべての 0 を 1 に変更し、すべての 1 を 0 に変更します。数値 1110 の 1 の補数は 0001 です。
  2. 次に、両方の数字、つまり 1101 と 0001 を追加します。
    1101+0001= 1110
  3. ここで、最終結果である結果 1110 の 1 の補数を求めます。したがって、結果 1110 の 1 の補数は 0001 であり、負の数であることを識別できるように、数値の前に負の符号を追加します。

ケース 3: 2 つの負の数の加算

この場合、まず両方の負の数の 1 の補数を見つけてから、これらの両方の補数を加算します。この場合、常に LSB に追加されるエンドアラウンド キャリーを取得し、最終結果を取得するために、結果の 1 の補数を取得します。

注: 結果は負の値になります。

例: 5 ビット レジスタの -1101 および -1110

  1. まず、負の数 01101 と 01110 の 1 の補数を見つけます。したがって、1 の補数を見つけるために、すべての 0 を 1 に変更し、すべての 1 を 0 に変更します。数値 01110 の 1 の補数は 10001 で、01101 は 10010 です。
  2. ここで、両方の補数、つまり 10001 と 10010 を加算します。
    10001+10010= 1 00011
  3. 両方の数値を加算すると、エンドアラウンド キャリー 1 が得られます。このエンドアラウンド キャリーを 00011 の LSB に追加します。
    00011+1=00100
  4. ここで、最終的な答えである結果 00100 の 1 の補数を求めます。したがって、結果 00100 の 1 の補数は 110111 となり、負の数であることを識別できるように数値の前に負の符号を追加します。

1の補数を使用した減算

1 の補数を使用して 2 つの 2 進数を減算する次の手順です。

  • 最初のステップでは、減数の 1 の補数を求めます。
  • 次に、補数と被減数を加算します。
  • キャリーが得られた場合は、そのキャリーを LSB に追加します。それ以外の場合は、結果の 1 の補数を取り、負になります。

注: 減数の値は常に被減数から減算されます。

例 1: 10101 - 00111

減数 00111 の 1 の補数を計算すると、11000 になります。次に、それらを合計します。それで、

10101+11000 =1 01101。

上記の結果では、キャリー ビット 1 が得られるので、これを特定の結果の LSB に追加します。つまり、01101+1=01110 が答えになります。

例 2: 10101 - 10111

減数 10111 の 1 の補数を計算すると、01000 になります。次に、両方の数値を加算します。それで、

10101+01000 =11101。

上記の結果では、キャリービットを取得できませんでした。したがって、結果の 1 の補数、つまり 00010 を計算します。これが負の数であり、最終的な答えになります。