-1

私はこのビット単位のゲートに取り組んできました。

a=0b01100001
b=0b01100010

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

>>>0b10011100

それで、これをnandゲートやその他のインスタンスで機能するようにどのように調整するのだろうと思っていました.

>>> bin((a ~ 0b11111111)& (b ~ 0b11111111))
SyntaxError: invalid syntax

>>> bin((a ^ 0b11111111) ~ (b ^ 0b11111111))
SyntaxError: invalid syntax

たとえば、機能しません。

4

1 に答える 1

2

ここから始めてください: https://wiki.python.org/moin/BitwiseOperators

  • x << y
    ビットを y だけ左にシフトして x を返します (右側の新しいビットはゼロです)。これは、x に 2**y を掛けることと同じです。
  • x >> y
    ビットを右に y シフトした x を返します。これは、x を 2**y で // するのと同じです。
  • x & y
    「ビットごとの and」を実行します。出力の各ビットは、y の x AND の対応するビットが 1 の場合は 1、それ以外の場合は 0 です。
  • x | y
    「ビットごとの論理和」を実行します。出力の各ビットは、y の x AND の対応するビットが 0 の場合は 0、それ以外の場合は 1 です。
  • ~ x
    x の補数 (各 1 を 0 に、各 0 を 1 に置き換えることによって得られる数値) を返します。これは -x - 1 と同じです。
  • x ^ y
    「ビットごとの排他的論理和」を実行します。出力の各ビットは、y のビットが 0 の場合は x の対応するビットと同じであり、y のビットが 1 の場合は x のビットの補数です。

ウィキペディアによると:

関数 NAND(a1, a2, ..., an) は、NOT(a1 AND a2 AND ... AND an) と論理的に同等です。

aしたがって、オペランドとbPython でビット単位の NAND 演算を行うには、次のようにします。

~(a & b)

関数に入れることができます:

bnand = lambda a, b: ~(a & b)

対応する非ビット単位の NAND は次のようになります。

not (a and b)

andしたがって、 and &(notおよび and ~);を混同しないように注意してください。また、論理演算子は小文字です。

PSまた、必ずこれを読んでください: Python: unsigned 32 bit ビット単位の算術演算

于 2013-10-06T17:28:27.943 に答える