論理和(OR)を試してみよう
シフトの次は論理和演算をやってみましょう。
論理和は、
- ビットごとの足し算と同じ
- ただし、1+1は1になる
- 使う記号(演算子)は |
でした。
では、プログラムを動作させて確かめてみましょう。変数を宣言して、ローカル変数ウィンドウで値を見る方法(前々回行いました)でもいいのですが、せっかくシミュレータでLED表示できる環境をつくりましたので、今回はこれを使って視覚的に確認してみます。いったんPM plusに戻ってください。SM+はそのまま終了させなくてOKです。
シフトの例題プログラムの時と同様に、ソースプログラムの入れ替えを行います。[ファイル]メニューから「新規作成」を選んで、図17のようなプログラムを入力してください。入力し終わったら、同じく[ファイル]メニューの名前を付けて保存を選んで、or.c というファイル名で保存します。
![図17:論理和のテストプログラム](http://cz-cdn.shoeisha.jp/static/images/article/3727/17.gif)
ここまでできましたら、shift.cの時と同様にプロジェクトのソースファイルを入れ替えます。shift.cを削除して、今作成したor.cを追加してください。Projectウィンドウの表示が図18のようになればOKです。
![図18:shift.cを削除してor.cを追加した](http://cz-cdn.shoeisha.jp/static/images/article/3727/18.gif)
できましたら、早速ビルド→ディバグを行ってSM+で動作させてみましょう。図19はP2への初期値の代入が終わった段階の状態です。P2は5、つまり2進数では0101なのでLEDはP22とP20が点灯します。
10行目は「論理和」演算です。3、つまり2進数で0011との論理和です。図20のように、
- 最下位ビットP20は1と1の論理和で1
- P21とP22は0と1(または1と0)の論理和で1
- 最上位ビットP23は0と0の論理和で0
となって、結果は0111になるはずです。
![図20:5(0101)と3(0011)の論理和](http://cz-cdn.shoeisha.jp/static/images/article/3727/20.gif)
では、もう1ステップ実行して結果を見てみましょう。LEDは図21のようになり、考察が正しかったことを確かめることができます。