0

用于计算Decimal Output具有 125 * A - 100 * (A Mod 4) + 2A (one BCD digit下列哪项是正确的

1)我们至少需要两个十进制加法器。

2)我们至少需要两个4位二进制加法器。

3) 我们至少需要一个十进制乘法器和一个十进制加法器。

4) 以上皆非。

为什么我们的讲师选择(4)作为解决方案而不是选择(3)?任何想法或提示?

谢谢大家。

4

1 回答 1

0

A Mod 4在原始等式中给出了 BCD 数字的两个最低有效位A。因此,让我们分别考虑 A 的两个最高和最低有效位,如下所示:

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

其中h后缀Ch表示C十六进制(即Ch二进制1100),AND表示逻辑与运算。

例如,如果我们有

A = abcd

其中a, b,cd是任意二进制数字,我们会得到

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中,我们需要计算两项 (100 * Y25 * A),加上一个常数项 ( 2)。

这个术语100 * Y在 BCD 中很简单:只需将Y两位数的位置向左移动到百位。

对于这个25 * A术语,我们需要一个乘数乘以A25。

现在,我们需要将所有三个术语相加,但是:

  • 100 * Y在术语和中设置的位(“一”位)之间没有重叠25 * A。实际上,term100 * Y只能设置百位的两个最高位(回到 的定义Y),而 term25 * A最多会设置同一位的两个最低位。要看到这一点,请记住25 * A = 100 * A / 4,这意味着该术语的百位数字不能超过 3。
  • 100 * Y和都是25 * A25 的倍数,这意味着它们的和也是如此,所以该和的低位只能是 0 (0000) 或 5 (0101)。第二位不能在那个总和中设置,因此也没有与常数2项重叠。

由于在考虑可以设置哪些位位置时所有三个项都不会重叠,我们可以使用简单的逻辑 OR 运算而不是实际的加法器来将所有三个项相加。

事实上,在我们所做的一切中,加法器从来都不是必需的,这意味着 4) 是唯一合适的答案。

于 2015-01-07T16:06:16.983 回答