より基本的な構成要素 (私の場合は Nand、Or、And を使用) を使って Xor 演算を構築するテストを行うには、Not 演算を実行できる必要があります。組み込み関数は、not
単一ビットでのみこれを実行するようです。次のようにします。
x = 0b1100
x = not x
を得るべきなのです0b0011
が、代わりに を得てしまいます0b0
。何が間違っているのでしょうか? それとも、Python にこの基本機能が欠けているのでしょうか?
Python には Xor 関数が組み込まれていることは知っていますが、Xor ゲートを作成する必要がある HDL プロジェクト/コースのテストに Python を使用しています。これを Python でテストしたかったのですが、Not ゲートに相当するものがないのです。
ベストアンサー1
Pythonでの使用の問題は~
、符号付き整数で動作することです。これは、特定のビット数に制限しない限り、本当に意味のある唯一の方法です。意思ビット演算では問題なく動作しますが、中間結果の解釈が難しくなる可能性があります。
4ビットロジックの場合は、0b1111
0b1111 - 0b1100 # == 0b0011
8 ビット ロジックの場合は、減算0b11111111
などを行います。
一般的な形式は
def bit_not(n, numbits=8):
return (1 << numbits) - 1 - n