1
1

More than 1 year has passed since last update.

python初学者の備忘録 ビット演算子について

Last updated at Posted at 2021-09-21

←目次

python,Qiita初心者なので、備忘録として記載していきます。 なにせ初心者なので、知識不足はご理解ください。 知識を深めながら追記していきたいと思います。

ビット演算子とは

基本

  • 整数でのみ利用可能
  • 整数に対してビット単位で論理演算を行う演算子
  • 2進数で表した整数型の値の各ビットに対して、それぞれ論理積、論理和、排他的論理和、ビット反転、ビットシフトを行う

・ビットとは二つの選択肢から一つを特定する情報量の最小単位  ※語源は "[ bi ]nary digi[ t ]" (二進法の数字) ・整数を2進数で表示したときの一桁、一桁のことをビット(bit)という ・2進数なので必ず0か、1になっており、2進数の桁ごとに論理演算することをビット演算という

以下の演算子がある
演算子 説明
& a & b AND:論理積(aもbも1のビットが1)
| a | b OR:論理和(aまたはbが1のビットが1)
^ a ^ b XOR:排他的論理和(aまたはbが1のビットが1)
~ ~ b ビット反転
>> a >> b b ビット右シフト
<< a << b b ビット左シフト
論理積(AND)、論理和(OR)、排他的論理和(XOR)の各ビットに対する入力と出力の関係は以下の表の通り
入力a 入力b AND OR XOR
1 1 1 1 0
1 0 0 1 1
0 1 0 1 1
0 0 0 0 0
AND(論理積):&演算子
>>> 1 & 1
1
OR(論理和):|演算子
>>> 1 | 1
1
XOR(排他的論理和):^演算子
>>> 1 ^ 1
0
ビット反転:~演算子
>>> ~ 1
-2
# 単純に各ビットを反転した値ではなく、~aは-(a+1)となる値を返す
ビット右シフト:>>演算子

指定した桁だけ右にずらして、最下位より先に押し出されたビットは消える

入力 出力 2進数
5>>0 5 '0b101'
5>>1 2 '0b10'
5>>2 1 '0b1'
5>>3 0 '0b0'
ビット左シフト:<<演算子

指定した桁だけ左にずらして、空いたビットには0が入る

入力 出力 2進数
5<<0 5 '0b101'
5<<1 10 '0b1010'
5<<2 20 '0b10100'
5>>3 40 '0b101000'
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1