Python でビットごとの Not 演算を実行するにはどうすればいいですか? 質問する

Python でビットごとの Not 演算を実行するにはどうすればいいですか? 質問する

より基本的な構成要素 (私の場合は 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

おすすめ記事