Я понимаю, что он берет 4А и вычитает его из B, но две добавленные единицы, которые добавляются к B, затрудняют мое понимание. Что я вычитаю из 2А? 1Б1?
Я также не смог найти примеров с похожими входными данными. В ключе ответа указано, что это должно быть 2B, но я не думаю, что они чем-то похожи, если только мне чего-то не хватает?
@KonstantinMakarov Ну, вопрос задавался о значении Z. Но я не могу понять, что должно быть B с этими двумя единицами.
Может быть, этот пример с конкретными значениями прояснит ситуацию?
A
умножается на 4: 4A
.B
переворачивается 63 - B
, умножается на 2 и добавляется 128 + 1 = 129
: 2(63 - B) + 129 = 255 - 2B
. Если мы рассмотрим эти единицы как часть инверсии, это приведет к тому же результату: 255 – 2B
.
Первый результат сумматора с учетом Cin
: 255 – 2B + 4A + 1 = 256 - 2B + 4A
. Поскольку он 8-битный, остается 4A - 2B
.
Второй сумматор вычитает 1 из результата, если он отрицательный.
Я вижу на картинке обычное сложение двух байт с учетом переноса
Cin = 1
. Затем сложение результата со значением00000000
или11111111
, в зависимости от значенияCout
, переносит. Какова конечная цель?