スポンサーリンク

python入門#16【ビット演算子】

python入門

うすけんです。

今回はビット演算子についてお話していきます。ビット演算子はANDやORなどを使い二進数などを計算していきます。

x | y    x と y のビット単位 論理和
x ^ y    x と y のビット単位 排他的論理和
x & y    x と y のビット単位 論理積
x << n   x の n ビット左シフト
x >> n   x の n ビット右シフト
~x       x のビット反転

ビットOR【論理和】

1010
1100
ーーー
1110

などのようになります。1が含まれている場合はそのまま下に行きます。

1 or 1 = 1
1 or 0 = 1
0 or 1 = 1
0 or 0 = 0

ビットAND【論理積】

1010
1100
——
1000

などのようになります。今回は1が両方含まれている場合下に行きます。

1 and 1 = 1
1 and 0 = 0
0 and 1 = 0
0 and 0 = 0

ビットXOR【 排他的論理和 】

1010
1100
——
0110

となります。

1 xor 1 = 0 
1 xor 0 = 1
0 xor 1 = 1
0 xor 0 = 0

ビットNOT

簡単に言えば反転です。

1010→0101

となります。

Python においては整数の桁が無制限となっているため、反転を行う限度がありません。その為 Python におけるビット NOT は 2 の補数の計算方法を使って次のように行います。
~x = -(x + 1)

https://www.javadrive.jp/python/num/index4.html

左シフト、右シフト

1011を2ビット左シフトすると

101100となります。簡単に言えば左に2つ数値が移動します。

右シフトですとその逆になります。

1011を1ビット右シフトすると

0101になります。

2進数の値としては
左シフトを 1 ビット行うと値は 2 倍になり、 2 ビット行うと 4 倍となります。
右シフトを 1 ビット行うと値は 1/2 倍になり、 2 ビット行うと 1/4 倍となります。

これがビット出力になります、処理としては上記に述べたように使います。

print(“10 | 12 = ” + str(10 | 12))#x と y のビット単位 論理和

使い方は覚えておきましょう!

コメント

タイトルとURLをコピーしました