2015-01-07 11 views
0

Для расчета Decimal Output из 125 * A - 100 * (A Mod 4) + 2 с A (one BCD digit) Какое из следующих значений: True?BCD сумматор и десятичный выход

1) нам нужен как минимум два десятичных сумматора.

2) нам нужно как минимум два 4-битных двоичных сумматора.

3) нам нужен как минимум один десятичный множитель и один десятичный сумматор.

4) Без вышеуказанного.

Почему наш инструктор выбирает (4) в качестве решения и не выбрал (3)? любая идея или намек?

спасибо всем.

ответ

0

A Mod 4 В исходном уравнении представлены два младших значащих разряда цифры BCD 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, c и d произвольные двоичные цифры, мы получим

X = 00cd 
Y = ab00 

Важно, отметить, что

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

Это позволяет нам использовать приложение LY дистрибутивности умножения над добавлением, в частности

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 * Y и 25 * A), плюс один постоянный срок (2).

Термин 100 * Y прост в BCD: просто сдвиньте Y двухзначное положение слева, до сотен цифр.

Для 25 * A перспективе нам нужно Multipler умножить A на 25.

Теперь нам нужно добавить все три условия вместе, но:

  • Там нет совпадения между установленными битами («один» бит) в терминах 100 * Y и 25 * A.Действительно, термин 100 * Y может устанавливать только два значащих бита сотенной цифры (вернемся к определению Y), в то время как термин 25 * A максимально установит два младших значащих бита той же позиции разряда. Чтобы убедиться в этом, помните, что 25 * A = 100 * A/4, то есть сотни цифр не могут быть более трех для этого термина.
  • Оба условия 100 * Y и 25 * A кратны 25, что означает, что их сумма также равна, поэтому нижняя цифра этой суммы может быть равна 0 (0000) или 5 (0101). Второй бит не может быть установлен в этой сумме, поэтому также нет перекрытия с константой 2.

Поскольку все три члена не пересекаются при рассмотрении того, какие битовые позиции могут быть установлены, мы можем добавить все три с помощью простой логической операции ИЛИ вместо фактического сумматора.

Фактически, во всем, что мы сделали, ни в коем случае не был нужен сумматор, что означает, что 4) является единственным подходящим ответом.

+0

Не могли бы вы добавить немного более подробную информацию для первых трех строк? я могу получить его! –

+0

@ user4249446 Прошу прощения за то, что вы так долго вернулись к этому ответу. Начало действительно нуждалось в улучшении, и я исправил это, надеясь, что это по-прежнему полезно. Пожалуйста, просмотрите и не стесняйтесь спрашивать, не ясно ли что-либо еще. –

+0

Большое спасибо, я одобряю это. пожалуйста, опишите немного больше на X = A и 3 = A Mod 4 (низкая часть), Y = A и Ch = A - A MOD 4 (высокая часть)? большое спасибо. –