Каковы выходные данные 4-битного ALU, когда инвертирование A = 1, отрицание B = 1 и идентификатор операции = 10? - PullRequest
1 голос
/ 30 сентября 2019

Я пытаюсь выяснить арифметическое или логическое / побитовое выражение (с использованием 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). Мы проверили наше выражение на паре других примеров и обнаружили, что оно работает. Правильно ли наше выражение или мы неправильно поняли определение «отрицание» / логика АЛУ?

...