Pythonで16ビットのビット反転(補数)を取得する方法
数値の下位16ビットだけを反転(ビットごとの補数を取得)したい場合は、その数値と 65535(2進数で16個すべてが1の値)とのXOR演算を行います。
XOR演算では、相手側のビットが1の場合に元のビットが反転されるため、65535とのXORを取ることで、ちょうど16ビット分だけを効率的に反転できます。それより上位のビットには影響しません。
サンプルコード
a = 3 # 2進数では 11 b = a ^ 65535 print(bin(b))
実行結果
このコードを実行すると、次の出力が得られます。
0b1111111111111100
解説
上記の例では、変数 a の値は3(2進数で 11)です。これに65535(2進数で 1111111111111111)をXORすると、下位16ビットがすべて反転され、結果は 0b1111111111111100 となります。
この手法は、組み込みシステムや通信プロトコルなどで16ビット幅のデータを扱う際に、特定のビット範囲だけを反転したい場合に便利です。
-
PythonのMatplotlibでシグナル(信号)をプロットする方法を徹底解説
PythonのMatplotlibとNumPyを組み合わせると、ノイズを含むシグナル(信号)を簡単に可視化できます。本記事では、正弦波にランダムノイズを重ねたシグナルをプロットする具体的な手順を、コード例とともにわかりやすく解説します。 シグナルをプロットする基本手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を自動調整します。 結果の再現性を確保するため、乱数シードを設定します。 サンプリング間隔 dt を初期化し、そこからサンプリング周波数 Fs を算出します。 np.arange() を使って時間軸 t のデータ点を作成します。 NumPyを利用してノイズ成分 n
-
Pythonでテキストファイルから指定した文字数だけ読み込む方法
Pythonでテキストファイルから指定した文字数だけ読み込む方法Pythonでファイルの内容を読み込むには、ファイルオブジェクトの f.read(size) メソッドを使用します。このメソッドは指定した量のデータを読み込み、文字列として返します。f.read(size) の基本的な動作size は省略可能な数値引数です。その挙動は以下のとおりです。size を省略した場合、または負の値を指定した場合: ファイル全体の内容が読み込まれ、返されます。size に正の数値を指定した場合: 最大で size バイト分のデータが読み込まれ、返されます。ファイルの末尾に達している場合: f.read()