and , or , exor がどんな物かは理解しているのを前提で進めます。
=====andマスク=====
andマスクとは、andを使って必要な情報だけを取り出す事です。\\
次の章にある、ビットシフトと組み合わせると効果的です。\\
例えば16bitのデータ(data)のうち、真ん中の8bitだけ欲しい時(result)、\\
次のようにすると、上手いことその部分だけを取り出す事ができます。\\
result = data & 0x0ff0;
この後、4bit左にシフトしておくと更にデータが扱いやすくなります。\\
(ビットシフトは次章参照)\\
result = (data & 0x0ff0) >> 4;
または\\
result = (data >> 4) & 0x0ff;
=====orで書き込む=====
orを使って、変数の一部だけを1にできます。\\
例えば、H8-3052でP8の 0,1,2 bit をhighにしたい時は\\
P8.DR.BYTE = P8.DR.BYTE | 0x07;
// "|" がorの演算記号
//(Shiftを押しながらBackSpaceの左にあるキーを押すと出る)
注意しなければならないのは、元が0であろうと1であろうと関係なしに1にするという点です。\\
andと組み合わせて使うと大抵何でもできます。\\
=====exor(xor)で反転させる=====
exorは色々と難しい事が書かれていますが、ここで注目するのは、\\
※ある値=0,1のいずれかとすると、\\
「ある値と0をexorすると結果はある値」\\
「ある値と1をexorすると結果はある値を反転させた値」\\
という性質です。\\
これを使えば、LEDを点滅させるプログラム等が楽に書けます。\\
それ以外にも色々と使い道はありますが・・・。\\
たとえば、3052で、P8の0,2bit目を反転させたい時\\
P8.DR.BYTE = P8.DR.BYTE ^ 0x05;
というように書く事ができます。\\
\\
\\
\\
以上。\\
ここで紹介したのは基本的な使い方なので、色々と応用できると思います。\\
bit演算を使う事で大幅に書く量が減ったり、実行速度が上がったりするので\\
使えるようになるとお得な部分だと思います。\\