An Embedded Engineer’s Blog

とある組み込みエンジニアの備忘録的なブログです。

Python学習メモ - その4

まえがき

最近、Python を勉強し始めたので、その学習メモです。

今回はビット演算、比較演算、論理演算についてです。


ビット演算

ビット演算はC言語などとほぼ変わらないので、特別異なる点のみ説明します。


シフト演算
print(2 << 3)
print(4 >> 2)

実行結果

16
1


2進数で表示してみると、どう動いてるのかがよく分かると思います。

print(bin(2) + " << " + str(3) + " = " + bin(2 << 3))
print(bin(4) + " >> " + str(2) + " = " + bin(4 >> 2))

実行結果

0b10 << 3 = 0b10000
0b100 >> 2 = 0b1


ビット単位の AND
print(1 & 1)
print(1 & 0)
print(0 & 1)
print(0 & 0)

実行結果

1
0
0
0


ビット単位の OR
print(1 | 1)
print(1 | 0)
print(0 | 1)
print(0 | 0)

実行結果

1
1
1
0


ビット単位の XOR
print(1 ^ 1)
print(1 ^ 0)
print(0 ^ 1)
print(0 ^ 0)

実行結果

0
1
1
0


ビット反転

Pythonには整数のビット数制限がないので、C言語などと同じ感覚で使用すると問題が起こることがあるかもしれません。 Pythonでのビット反転は必ず-(x+1)となります。

print(~1)

実行結果

-2


比較演算

比較演算もC言語などと変わらないので、詳細は省略します。 なお、Pythonでは比較演算の結果はbool型(True / False)で返ります。

算術等価
print(1 == 1)
print(1 == 2)

実行結果

True
False


算術非等価
print(1 != 1)
print(1 != 2)

実行結果

False
True


小なり
print(1 < 1)
print(1 < 2)

print()

print(1 <= 1)
print(1 <= 2)

実行結果

False
True

True
True


大なり
print(1 > 1)
print(1 > 2)

print()

print(1 >= 1)
print(1 >= 2)

実行結果

False
False

True
False


論理演算

論理演算はC言語などと比べて機能的には変わりませんが、表記が異なります。

機能 Python C系言語 備考
論理否定 not !
論理等価 is ==
論理積 and &&
論理和 or ||


論理否定
print(not True)
print(not False)

実行結果

False
True


論理等価
print(True is True)
print(True is False)

実行結果

True
False


論理積
print(True and True)
print(True and False)
print(False and True)
print(False and False)

実行結果

True
False
False
False


論理和
print(True or True)
print(True or False)
print(False or True)
print(False or False)

実行結果

True
True
True
False


参考文献

Python 公式リファレンス

https://docs.python.org/ja/3.7/index.html

Python-izm

https://www.python-izm.com/

ゲームを作りながら楽しく学べるPythonプログラミング

エキスパートPythonプログラミング

エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ)

エキスパートPythonプログラミング 改訂2版 (アスキードワンゴ)