Я пытаюсь выяснить арифметическое или логическое / побитовое выражение (с использованием A и B), которое представляет выходные данные ALU, когда Invert A = 1, Negate B = 1 и ID операции = 10. Мне запрещеночтобы смешать арифметические и булевы / побитовые операторы, я должен использовать в своем ответе только один тип оператора.
Мы с партнером пытались проследить логику АЛУ для разработки выражения. Тем не менее, мы запутались в значении «отрицать Б.»Означает ли это, что мы переворачиваем все биты в B, или это означает, что мы переворачиваем все биты в B и затем добавляем 1 к результату? Если я попробую пример с последним случаем, например, если A = 0110 и B = 0001, то: Invert A = 1001, Negate B = 1111.
Result 0: 1 + 1 = 0, carry-out = 1
Result 1: 0 + 1 + (carry-in = 1) = 0, carry-out = 1
Result 2: 0 + 1 + (carry-in = 1) = 0, carry-out = 1
Result 3: 1 + 1 + (carry-in = 1) = 1, carry-out 1
Таким образом, конечный результат будет1000 = -8. Поскольку мы запутались в значении «отрицание B», мы не уверены, является ли это даже правильным результатом для этого примера. Если мы правы, то выражение, использующее только арифметические операторы, будет ~ A + (~ B + 1) = (-A - 1) + (-B). Мы проверили наше выражение на паре других примеров и обнаружили, что оно работает. Правильно ли наше выражение или мы неправильно поняли определение «отрицание» / логика АЛУ?