Побитовые ворота NOR - что значит &?

Я пытаюсь понять код из ответа, который я получил вчера:

2-й: Как сделать битовые NOR ворота
1-й: Как сделать побитовый NOR Gate в Python (редактирование математики Python для меня работать)

a=0b01100001
b=0b01100010

bin((a ^ 0b11111111) & (b ^ 0b11111111))

Теперь я понимаю все, кроме:

& между двумя значениями

и ^ 11111111 (Я знаю это 0b является базой 2)

Может кто-нибудь объяснить это?

1 ответ

Как NOR работает?

Выражение x NOR y может быть сломан с помощью AND, OR, а также NOT:

x NOR y == NOT(x OR y) == NOT(x) AND NOT(y)

Итак, для ваших заданных значений:

a=0b01100001
b=0b01100010

a NOR b было бы NOT(a) AND NOT(b), Теперь подумайте, как бы вы сделали NOT(a)? Вам просто нужно перевернуть биты. Какой способ перевернуть биты? XOR(^), Как?

0 ^ 1 == 1
1 ^ 1 == 0

Итак, принимая XOR любой бит с 1 перевернет этот бит. т.е. NOT(somebit) == a XOR somebit, Итак, в вашем случае, просто возьмите XOR каждого бита в a а также b с 1 достанет тебе NOT:

   01100001
^  11111111
------------
   10011110

То есть мы делаем XOR с 11111111, Обратите внимание на количество 1's такое же, как количество бит в a,

Собираем это вместе:

NOT(a) = a ^ 0b11111111
NOT(b) = b ^ 0b11111111

Теперь, когда мы получили NOT с a а также b давайте сделаем AND, Итак, как сделать AND? Просто сделай побитовый &,

Это довольно просто:

NOT(a) AND NOT(b) == (a ^ 0b11111111) & (b ^ 0b11111111)
Другие вопросы по тегам