ビット積

ビット単位の論理積(ビット積)演算では、桁ごとに論理積を計算します。論理積では、両方とも1の場合1とし、他の場合は0にします。桁ごとに計算しますので、2つの数を縦に並べて計算すると楽です。a=100(2)とb=110(2)を例に挙げましょう。10進数に直すと、aは4(10)で、bは6(10)です。これらのビット積は、

  100 (=a)

  110 (=b)

  100 (ビット積)

と計算できます。一番左の桁では、1と1が並んでいますので、その論理積は1になります。左から2番目の桁では、0と1が並んでいますので、その論理積は0になります。一番右の桁では、0と0が並んでいますので、その論理積は0になります。

C言語でビット積を計算するには、演算子として&を使います。上の例では、a & bとなります。&を2つ続けて&&としてしまいますと、論理積演算(レッスン16参照)となり、ビット単位の計算にはなりません。

ビット和

ビット単位の論理和(ビット和)演算では、桁ごとに論理和を計算します。論理和では、両方とも0の場合0とし、他の場合は1にします。例えば、a=100(2)とb=110(2)のビット積は、

  100 (=a)

  110 (=b)

  110 (ビット和)

と計算できます。一番左の桁では、1と1が並んでいますので、その論理和は1になります。左から2番目の桁では、0と1が並んでいますので、その論理和は1になります。一番右の桁では、0と0が並んでいますので、その論理和は0になります。

ビット和を計算するには、演算子として | を使います。上の例では、a | bとなります。|を2つ続けて||としてしまいますと、論理積演算(レッスン16参照)となり、ビット単位の計算にはなりません。

ビット論理演算子

&や|のように、ビット単位で論理演算を行う演算子をビット論理演算子といいます。