Digital-circuits-signed-binary-arithmetic

提供:Dev Guides
移動先:案内検索

デジタル回路-符号付きバイナリ演算

この章では、2の補数法を使用して任意の2つの符号付き2進数で実行できる基本的な算術演算について説明します。 *基本的な算術演算*は加算と減算です。

2つの符号付き2進数の加算

2の補数形式で表される2つの符号付き2進数AとBを考えます。 これら2つの数値の*加算*を実行できます。これは、2つの符号なし2進数の加算に似ています。 ただし、結果の合計に符号ビットからのキャリーアウトが含まれる場合、正しい値を取得するためにそれを破棄(無視)します。

結果の合計が正の場合、その大きさを直接見つけることができます。 しかし、結果の合計が負の場合、大きさを取得するために2の補数を取ります。

例1

2の補数法を使用して、2つの10進数 + 7および+ 4 の*加算*を実行します。

それぞれが5ビットの+7および+4の* 2の補数*表現を以下に示します。

(+7)〜10〜=(00111)〜2〜

(+4)〜10〜=(00100)〜2〜

これら2つの数字の加算は

(7)〜10〜(+ 4)〜10〜=(00111)〜2〜+(00100)〜2〜

⇒(7)〜10〜(+ 4)〜10〜=(01011)〜2〜。

結果の合計には5ビットが含まれます。 したがって、符号ビットからのキャリーアウトはありません。 符号ビット「0」は、結果の合計が*正*であることを示します。 したがって、合計の大きさは10進数で11です。 したがって、2つの正数を加算すると、別の正数が得られます。

例2

2の補数法を使用して、2つの10進数 -7 および -4 の*加算*を実行してみましょう。

それぞれが5ビットの-7および-4の* 2の補数*表現を以下に示します。

(−7)〜10〜=(11001)〜2〜

(−4)〜10〜=(11100)〜2〜

これら2つの数字の加算は

(-7)〜10〜(-4)〜10〜=(11001)〜2〜(11100)〜2〜

⇒(−7)〜10〜+(−4)〜10〜=(110101)〜2〜。

結果の合計には6ビットが含まれます。 この場合、キャリーは符号ビットから取得されます。 だから、それを削除することができます

キャリーを削除した後の結果の合計は(-7)〜10〜+(-4)〜10〜= *(10101)〜2〜*です。

符号ビット「1」は、結果の合計が*負*であることを示します。 したがって、2の補数をとることにより、結果の合計の大きさを10進数で11として取得します。 したがって、2つの負の数を加算すると、別の負の数が得られます。

2つの符号付き2進数の減算

2の補数形式で表される2つの符号付き2進数AとBを考えます。 正の数の2の補数が負の数になることを知っています。 したがって、数字Aから数字Bを引く必要があるときはいつでも、Bの2の補数を取り、それをAに追加します。 したがって、*数学的に*と書くことができます

*A-B = A + _(Bの2の補数)_*

同様に、数字Bから数字Aを引く必要がある場合、Aの2の補数を取り、Bに追加します。 したがって、*数学的に*と書くことができます

*B-A = B + _(Aの2の補数)_*

したがって、2つの符号付き2進数の減算は、2つの符号付き2進数の加算に似ています。 ただし、2の補数をとる必要があり、これは減算されることになっています。 これは、2の補完技術の「利点」です。 2つの符号付き2進数の加算の同じ規則に従います。

実施例3

2の補数法を使用して、2つの10進数 + 7および+ 4 の*減算*を実行します。

これら2つの数値の減算は

(7)〜10〜-(+4)〜10〜=(+7)〜10〜(−4)〜10〜。

それぞれが5ビットである+7および-4の* 2の補数*表現を以下に示します。

(+7)〜10〜=(00111)〜2〜

(+4)〜10〜=(11100)〜2〜

⇒(7)〜10〜(4)〜10〜=(00111)〜2〜(11100)〜2〜=(00011)〜2〜

ここで、符号ビットから取得されたキャリー。 したがって、削除できます。 キャリーを削除した後の合計は

(7)〜10〜(+4)〜10〜= (00011)〜2〜

符号ビット「0」は、結果の合計が*正*であることを示します。 したがって、その大きさは10進数で3です。 したがって、2つの10進数+7と+4の減算は+3です。

実施例4

2の補数法を使用して、2つの10進数 + 4 および + 7 の*減算*を実行してみましょう。

これら2つの数値の減算は

(4)〜10〜-(+7)〜10〜=(+4)〜10〜(-7)〜10〜。

それぞれ5ビットの+4および-7の* 2の補数*表現を以下に示します。

(+4)〜10〜=(00100)〜2〜

(-7)〜10〜=(11001)〜2〜

⇒(4)〜10〜(-7)〜10〜=(00100)〜2〜+(11001)〜2〜=(11101)〜2〜

ここでは、キャリーは符号ビットから取得されません。 符号ビット「1」は、結果の合計が*負*であることを示します。 したがって、2の補数をとることにより、結果の合計の大きさを10進数で3として取得します。 したがって、2つの10進数+4および+7の減算は-3です。