物の状態などをデータで表す場合に数値を使うことがありますが、そういう場合のテクニックです。

例としてファイルシステムのパーミッションを取り上げます。 パーミッションは下記の数値で表されます。

read   :1
write  :2
execute:4

あるファイルのパーミッションが5とすると、
このファイルには「read」と「execute」の権限があることになります。
では、このファイルに「read」の権限があるかどうかはどう判別すればいいでしょう?

(5 / 1) % 2 >= 1

これで判別できます。
同様に「write」「execute」は下記のように判別できます。

(5 / 2) % 2 >= 1    // write
(5 / 4) % 2 >= 1    // execute

つまり、

([パーミッション値] / [判別する権限値]) % 2

この式が1以上を返せば権限あり、1未満であれば権限なしとなります。

この計算式はかなり使えそうです。
例えばチェックボックスでどの項目にチェックしたかを保存したいとします。
選択肢には下記のような値を振っておきます。

バナナ:1
リンゴ:2
ブドウ:4
イチゴ:8
メロン:16

こうしておけば選択した値の合計値を保存しておくだけで、どの項目にチェックしたかが判別できます。
「バナナ」「ブドウ」「イチゴ」を選択した場合、合計値は 1+4+8=13 です。 この13という数値だけを保存しておきます。

後で「イチゴ」が選択されたかどうかを判別したい場合は、

(13 / 8) % 2 >= 1

でわかります。

つまり

([合計値] / [果物の値]) % 2 >= 1

でわかるってこと。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-11-16 (金) 19:14:21 (4292d)