ビットシフトには前章のように、ビットごとに値を操作する使い方よりも、\\ 演算として使用する頻度が高い(気がする)演算です。\\ =====ビットごとの処理に使ってみる===== ====出力の時==== 例えば、3052のP8に,BYTEアクセスで(LEDの点灯の)状態を書き込みたい時、\\ led0,led1,led2という変数に0か1が入っているとして、\\ (それぞれ0,1,2bit目に対応とすると)\\ P8.DR.BYTE = (P8.DR.BYTE & 0xf8) ;//クリアしておく P8.DR.BYTE = P8.DR.BYTE | led0 | (led1 << 1) | (led2 << 2); みたいな書き方ができます。\\ P8.DR.BYTE = (P8.DR.BYTE & 0xf8) ;//クリアしておく P8.DR.BYTE = P8.DR.BYTE + led0 + (led1 << 1) + (led2 << 2); でも全く同じになります。\\ ====入力の時==== 一番使用する頻度が高いのはAD変換での取り込みだと思います。\\ H8-3052では10bitしか変換精度がないA/Dコンバータの変換結果を、\\ 16bitのデータレジスタに(何故か)上位bitから詰め込んであります。\\ つまり、下位6bitは何の意味もないデータです。\\ そこを捨てるのにbitシフトをよく使います。\\ result = adresult >> 6; //下位6bitを捨てて10bitの結果を取り出す ライントレーサであれば3bitか4bitもあれば(多分)十分なので、\\ 直感的に扱う事ができるように12bitシフトしてしまうというのも手です。\\ また、15bitシフトさせると0か1が結果として残ります。\\ 2.5V付近を行き来する値の場合,15bitシフトさせるのも手です。\\ (はじめからI/Oポートに繋いでもほぼ同じ事ですが)\\ =====演算に利用してみる===== ビットシフトは演算としての意味合いが大きいです。\\ \\ 右にnビットシフトすることは、元の値を2のn乗で割る事に対応します。\\ 同様に、左にnビットシフトするのは、元の値に2のn乗を掛ける事です。\\ ※右にシフトしたとき、"あまり"は電子の海に消えます。\\ \\ 特に、割り算として利用できるというのは大きな利点です。\\ なぜなら、コンピュータは割り算が苦手なので、普通に割り算を計算させると\\ 普通の演算(加減乗)の数十倍の時間がかかったりするからです。\\ \\ ので、処理速度が欲しい箇所などでは、積極的に使うと(きっと)効果大です。\\ \\ \\ 使いどころのサンプルがありませんが、いたるところで使えると思うのでどうぞ。\\