0xff00
」のように、頭に「0x
」を付ければ良い。
&
」を用いる。
各ビットの論理積を求めたものが演算結果となる。
例えば、0xaf (2進数では10101111) と0xf0 (同11110000) の
論理積「0xaf & 0xf0
」を求めると、
より、結果は0xa0となる。10101111
AND
11110000
=
10100000
|
」を用いる。
^
」を用いる。
~
」を用いる。
各ビットの0と1を反転させる (0→1, 1→0)。
のように、ビット列をずらす操作である。 右シフトは演算子「MSB LSB 10101111 元データ
01010111 1bit右シフト
00101011 2bit右シフト
00010101 3bit右シフト
>>
」を用いて、
「データ >>
シフト量」
のように書く。
左シフトは演算子「<<
」を用いて、
「データ <<
シフト量」
となる。
a
」の2ビット目を1にする
(注: 最下位ビットを0ビット目としています。)
a = a | 0x04;
a
」の2ビット目を0にする
a = a & ~0x04;
a
」の
2ビット目が0であるかを調べる
if ((a & 0x04) == 0)
if ((a & 0x04) == 1)
」
というプログラムは、
「変数aの2ビット目が1であるかどうかを調べる」という動作をしません。
論理積を参考に、
「a & 0x04
」が取り得る値を考えてみましょう。if (a & 0x04 != 0)
」
というプログラムは、上記の動作はしません。
演算子の優先順位
を調べましょう。
a << 1;
」は
変数「a
」の値を左に1ビットシフトさせた値を計算するだけで、
変数「a
」の内容は変化させません。
「a++
」のような動作ではありません。
変数「a
」の内容は変化させるときは、
a = a << 1;
または
a <<= 1;
のようにします。
^
」は巾乗ではない(作成: 2001年11月20日, 最終更新: 2010年10月20日)