0

( ) を持つ の計算についてDecimal Output次 のうち正しいものはどれですか?125 * A - 100 * (A Mod 4) + 2one BCD digit

1) 少なくとも 2 つの小数加算器が必要です。

2) 少なくとも 2 つの 4 ビット バイナリ加算器が必要です。

3) 少なくとも 1 つの 10 進乗数と 1 つの 10 進加算器が必要です。

4) 上記のいずれでもない。

インストラクター(4)がソリューションとして選択し、選択しなかったのはなぜ(3)ですか? アイデアやヒントはありますか?

ありがとうございます。

4

1 に答える 1

0

A Mod 4元の式の は、BCD 桁の最下位 2 ビットを示しますA。したがって、次のように、A の 2 つの最上位ビットと最下位ビットを別々に考えてみましょう。

X = A AND 3 = A Mod 4  (two least significant bits)
Y = A AND Ch           (two most significant bits)

ここで、h接尾辞 inChC16 進数 (つまりCh11002 進数) をAND意味し、論理 AND 演算を示します。

たとえば、

A = abcd

ここab、、、cおよびdは任意の 2 進数であり、次のようになります。

X = 00cd
Y = ab00

重要な点として、

A = X + Y
(ab00 + 00cd = abcd)

これにより、特に加算に対する乗算の​​分配性を適用できます。

  125 * A
= 125 * (X + Y)
= 125 * X + 125 * Y

だから、私たちは持っています

  125 * A - 100 * (A Mod 4) + 2     (original equation)
= 125 * (X + Y) - 100 * X + 2       (replace A with X + Y)
= 125 * Y + 125 * X - 100 * X + 2   (distributivity)
= 125 * Y + 25 * X + 2              (125 * X - 100 * X = 25 * X)
= 100 * Y + 25 * (X + Y)            (125 * Y = 100 * Y + 25 * Y)
= 100 * Y + 25 * A + 2              (replace X + Y with A)

最後の式100 * Y + 25 * A + 2には、計算する必要がある 2 つの項 (100 * Yおよび25 * A) と、1 つの定数項 ( 2) があります。

この用語100 * Yは BCD では簡単ですY。2 桁の位置を左にシフトし、100 の桁に移動するだけです。

項については、2525 * Aを掛ける倍数が必要です。A

ここで、3 つの項すべてを一緒に追加する必要がありますが、次のようになります。

  • と の設定ビット (「1」ビット) の間に重複はありませ100 * Y25 * A。実際、term100 * Yは 100 桁の最上位 2 ビットのみを設定できますが ( の定義に戻りますY)、term25 * Aはせいぜい同じ桁位置の 2 つの最下位ビットを設定します。それを確認するには、 を覚えておいてください。これは25 * A = 100 * A / 4、その用語の百の位が 3 を超えることはできないことを意味します。
  • 100 * Y25 * Aは両方とも 25 の倍数です。つまり、それらの合計も 25 の倍数であるため、その合計の下位桁は 0 (0000) または 5 (0101) しかありません。その合計では 2 ビット目を設定できないため、定数2項との重複もありません。

どのビット位置を設定できるかを考えると、3 つの項すべてが重複しないため、実際の加算器の代わりに単純な論理 OR 演算を使用して 3 つすべてを加算できます。

実際、私たちが行ったすべてのことにおいて、加算器が必要になったことは一度もありませんでした。つまり、4) が​​唯一の適切な答えです。

于 2015-01-07T16:06:16.983 に答える