マンガで分かる Java入門講座

第4章 数値変数と演算子
4-8B. [コラム] ビット演算子

初心者にはちょっと高度な「ビット演算子」を紹介します。

● ビット演算子

 booleanの値に対して計算を行う、論理演算という方法を学びました。

 「ビット演算」は、整数の数値を2進数として見て、各桁(bit)の1をtrue、0をfalseとみなして、各bitごとに論理演算を行う計算方法です。

 ビット演算は、シフト演算同様、少し難しい計算ですので、プログラムにまだ不慣れな人は読み飛ばしてください。

 ビット演算では、論理演算と同じ記号(一部違う記号がある)を利用します。これらの記号を「ビット演算子」と呼びます。

 まずは、分かりやすいように、ビット演算の&の計算を示します。

説明)AND演算の計算例
  5  =    0 | 1 | 0 | 1
& 9  =  & 1 | 0 | 0 | 1
――――――――――――
  1  =    0   0   0   1

 10進数の5は2進数では101になります。10進数の9は二進数では1001になります。この各桁を比較して、両方が1の場合に1、それ以外は0として計算を行います。その結果、2進数の1が結果として求まります。

 2進数の1は、10進数でも1です。そのため「5 & 9 = 1」という結果が求まります。

 以下、ビット演算子を紹介します。

表)ビット演算子
演算子使い方名前計算内容
&a & bAND(論理和)ビットが両方1なら1、それ以外は0
|a | bOR(論理積)ビットの片方でも1なら1、それ以外は0
^a ^ bXOR(排他的論理和)2つのビットが異なるなら1、同じなら0
~~aNOT(否定)ビットを反転

 ~演算は少し分かり難いと思いますので、例を示します。

説明)NOT演算の計算例
~ 255  =  00000000 00000000 00000000 11111111
―――――――――――――――――――――――――
 -256  =  11111111 11111111 11111111 00000000

この講座のマンガ部分は「箱人形マンガ(Box Comic) 」で作成しています。
作成:2013/05/20  更新:2015/08/08  [Permalink]