« 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

口臭チェッカー市場