[[
and_orの使い方
]]
Mice Wiki
現在位置:
IndexPage
»
and_orの使い方
文書の表示
以前のリビジョン
最近の変更
索引
ログイン
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
and , or , exor がどんな物かは理解しているのを前提で進めます。 =====andマスク===== andマスクとは、andを使って必要な情報だけを取り出す事です。\\ 次の章にある、ビットシフトと組み合わせると効果的です。\\ 例えば16bitのデータ(data)のうち、真ん中の8bitだけ欲しい時(result)、\\ 次のようにすると、上手いことその部分だけを取り出す事ができます。\\ <code c> result = data & 0x0ff0; </code> この後、4bit左にシフトしておくと更にデータが扱いやすくなります。\\ (ビットシフトは次章参照)\\ <code c> result = (data & 0x0ff0) >> 4; </code> または\\ <code c> result = (data >> 4) & 0x0ff; </code> =====orで書き込む===== orを使って、変数の一部だけを1にできます。\\ 例えば、H8-3052でP8の 0,1,2 bit をhighにしたい時は\\ <code c> P8.DR.BYTE = P8.DR.BYTE | 0x07; // "|" がorの演算記号 //(Shiftを押しながらBackSpaceの左にあるキーを押すと出る) </code> 注意しなければならないのは、元が0であろうと1であろうと関係なしに1にするという点です。\\ andと組み合わせて使うと大抵何でもできます。\\ =====exor(xor)で反転させる===== exorは色々と難しい事が書かれていますが、ここで注目するのは、\\ ※ある値=0,1のいずれかとすると、\\ 「ある値と0をexorすると結果はある値」\\ 「ある値と1をexorすると結果はある値を反転させた値」\\ という性質です。\\ これを使えば、LEDを点滅させるプログラム等が楽に書けます。\\ それ以外にも色々と使い道はありますが・・・。\\ たとえば、3052で、P8の0,2bit目を反転させたい時\\ <code c> P8.DR.BYTE = P8.DR.BYTE ^ 0x05; </code> というように書く事ができます。\\ \\ \\ \\ 以上。\\ ここで紹介したのは基本的な使い方なので、色々と応用できると思います。\\ bit演算を使う事で大幅に書く量が減ったり、実行速度が上がったりするので\\ 使えるようになるとお得な部分だと思います。\\
/home/users/2/deca.jp-mice/web/cgi/dokuwiki/data/pages/and_orの使い方.txt · 最終更新: 2010/06/23 01:40 by member
文書の表示
以前のリビジョン
文書の先頭へ