C言語のビット演算

 組込みプログラミングをやると、どうしても避けて通れないのがビット演算である。ANSI Cにも出ているけれども入門Cでは、ほとんど取り上げられていない内容だ。

  ・A and B → A & B
  ・A or B → A | B
  ・A xor B → A ^ B
  ・not A → ^A
  ・右SHIFT → A >> x(シフトするbit数)
  ・左SHIFT → A << x(シフトするbit数)

 これは、例えば下記のように使う。

 *変数Aの特定のbitが0か1を判断する
   if((A & x) == 0)
   {
           xは判断したいbit位置のみが1となっている定数 例) 0x01

 *特定のbitをリセット
   A = A & ~x;
           xはリセットしたいbit位置のみが1となっている定数

 *特定のbitをセット
   A = A | x;
           xはセットしたいbit位置のみが1となっている定数

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

きいろ
2012年02月25日 14:48
*変数Aの特定のbitが0か1を判断する
   if((A & x) == 0) >> if((A & x) == x)正解はこちら
   {
           xは判断したいbit位置のみが1となっている定数 例) 0x01
iCHIRO(管理人)
2012年02月25日 16:41
if((A & x) == 0) >> if((A & x) == x)正解はこちら
とコメントを戴きました。xと比較しても良いのですが
元の通り、0と比較した方が簡単です。比較の結果で、0ならそのビットは、0と判断されます。コメントの様に、1と判断したい場合は、
if((A & x) != 0)とコーディングします。

この記事へのトラックバック