« HSPTV!メルマガ 第21号 | メイン | 【講座】「教えて!おにたま!!」 »
2006年08月29日
【講座】HSPよく使うフレーズ 第14回 続&の使い方
さて、今回は前回の記事をみてくれた「ぽち」さんからの
おたよりです。
「ぽち」さんは前回の「n=(n+1) & 3」を分かりやすく解説して
くれました。
せっかくなので、こちらに掲載します。
----ここから
ある数xを「2のn乗」の数で割ったあまりを求めたいとき、
例では、(n + 1)を4で割った余りを求めたいとき、
(n + 1) \ 4
とする代わりに、
(n + 1) & (4 - 1) → (n + 1) & 3
とすることが出来ます。
これはAND演算(論理積)の特徴で、割られる数と3の2進数11とのAND演算
は、以下のようになり、4で割った余りを求めることと同じ結果になりま
す。
xxxx xx00 & 11 → 0000 0000
xxxx xx01 & 11 → 0000 0001
xxxx xx10 & 11 → 0000 0010
xxxx xx11 & 11 → 0000 0011
演算の結果は0~3、xは0でも1でも必ず0になります。
ではなぜ、(n + 1) \ 4とする代わりに、分かり難い(n + 1) & 3としたか
と言えば、コンピュータのCPUの基本機能として、AND演算などのビット演
算はこれ以上に無いほど高速だからです。
これは、小さい頃から10進数で数を考える仕組みが出来ている人間の脳に
とって、10や100などの10のn乗で割った余りを瞬く間に求められることと
同じだと言えるかも知れません。
この手法は、「2のn乗」で割った余りを求めたいとき意外には使えません。
例えば、100は「2のn乗」ではありませんので、100で割った余りを求める
ために、
(n + 1) & 99
とはできませんので、注意してください。
----ここまで
前回の私の解説より、わかりやすいと思います。
「ぽち」さん、解説ありがとうございました。
というわけで、今回は1回分記事を書くのを夏休みにしちゃう、
うすあじなのでした。
(うすあじ)
投稿者 usuaji : 2006年08月29日 23:48
口臭チェッカー市場