SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

たった5つのルールではじめるC言語開発

たった5つのルール

変数と演算子


  • X ポスト
  • このエントリーをはてなブックマークに追加

論理積

 今回のマジカルボックスでは直接は使用していないのですが、論理和とペアで覚えておきましょう。こんどは2進数でのかけ算です。

1)  0×0=
2)  0×1=
3)  1×0=
4)  1×1=

 普通の計算では、1)から3)までは0、4)だけが1ですね。論理積でも同じです。論理積は英語ではANDと表現されます。さきのORが「演算する値のどちらかが1であれば結果は1」であったのに対し、論理積は「演算する値が両方とも1(1かつ(AND)1)のときだけ1」になります。

 普通のかけ算と論理積は、複数桁の演算をすると顕著に違いがわかります。たとえば

0011×0010=

 は、いくつになるでしょうか。十進数では3×2ですから、通常の計算では答は6、つまり0110です。論理積では、それぞれ桁ごとに計算をします。すると図6のようになります。

図6:4桁の2進数の論理積計算例
図6:4桁の2進数の論理積計算例

 ということで、答は0010(2)です。

 論理和(OR)では、任意のビットを1にするのに利用すると述べましたが、論理積(AND)はその逆で、任意のビットを0にするのに使用します。

 再度図5を例に説明します。いま、いくつかのLEDが点灯しているとします。この中でD7だけ消灯させたい、つまりb7だけを0にしたい場合、b7の位置だけ0の値とAND演算することで実現できるのです。C言語では論理積は演算子に&を以下のように書きます。

Px = Px & 127 ;     /* 127 は 0111 1111  */

 演算する値の桁が1の部分、つまりb6~b0は、Pxの各ビットがもともと0であれば0&1=0で変化しません。もともと1であった場合も、1&1=1で変化しません。演算する値の桁が0の部分、つまりb7だけが、元の値が1であろうと0であろうと、0との論理積となって必ず0になるわけです。

マスク

 組込みソフトでは、このように論理積演算を使って特定の桁だけ情報を保存して、それ以外をクリアする行為を「マスクをかける」と言います。説明した例のようなハードウェア制御に限らず、たとえば8で割った余りを求めたいとき(タブを含んだカーソル位置を求める処理などでよく登場します)、変数&7というふうに、対象変数の下位3ビットだけを「マスク」して取りだしてやることで、きわめてシンプルに実現することができます。

次回は

 変数と演算子の説明は以上です。今回は演習作業なしでしたので、少々退屈でしたでしょうか。次回は、シミュレータを使って、今回の動作を目で見て確かめてみます。それではまた。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
たった5つのルールではじめるC言語開発連載記事一覧

もっと読む

この記事の著者

舘 伸幸(タチ ノブユキ)

NECマイクロシステム株式会社 勤務NPO法人SESSAME 所属開発ツールのソフトウェア開発を経て組込みソフトウェア開発に従事。プライベートにも半田ごては手放さない。2006年からSESSAME に参加。若い世代に物を作る楽しさを伝えていきたい。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3724 2009/03/26 17:57

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング