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) является единственным подходящим ответом.
Не могли бы вы добавить немного более подробную информацию для первых трех строк? я могу получить его! –
@ user4249446 Прошу прощения за то, что вы так долго вернулись к этому ответу. Начало действительно нуждалось в улучшении, и я исправил это, надеясь, что это по-прежнему полезно. Пожалуйста, просмотрите и не стесняйтесь спрашивать, не ясно ли что-либо еще. –
Большое спасибо, я одобряю это. пожалуйста, опишите немного больше на X = A и 3 = A Mod 4 (низкая часть), Y = A и Ch = A - A MOD 4 (высокая часть)? большое спасибо. –