フラグ操作には欠かせないビット演算子の動作のまとめ
<論理否定 not>
not 0 → 1
not 1 → 0
但しVRMでは
not n → 0 (nは0以外)
<要点>
①反転させる
<使い道>
0を1に、0以外を0にする。
<論理和 or>
0 or 0 → 0 ・・・①
0 or 1 → 1 ・・・②
1 or 0 → 1
1 or 1 → 1 ・・・②
<要点>
①両者が0になった時を識別できる
②1を書き込める
<使い道>
ビットをセットする場合に使われる(②のこと)らしいが、あまり具体的な使い道は思いつかない。
<排他的論理和 xor>
0 xor 0 → 0 ・・・①
0 xor 1 → 1 ・・・②
1 xor 0 → 1
1 xor 1 → 0 ・・・①②
<要点>
①両者が同じ値(或いは違う値)になった時を識別できる
②下記記載
<使い道>
フラグの値を反転するときによく使われる。多分VRMでは一番使われる演算子。
参考:Rosso Laboratory「トグルスイッチテンプレート」
<論理積 and>
0 and 0 → 0 ・・・②
0 and 1 → 0 ・・・③
1 and 0 → 0 ・・・②
1 and 1 → 1 ・・・①③
<要点>
①両者が1になった時を識別できる
②0を書き込める
③下記記載
<使い道>
特定のビットが1か0かを調べるのに使われるらしい。
参考:VRM入道「and命令って何の役に立つの?」
---*---*---*---
<まとめ>
各演算子は①の利用方法としては全て使えるだろう。しかし、それ以外は「xorの②」を除いてあまり使うことはないだろうと思われる。
---*---*---*---
fox-hobby-garden「スクリプト[命令リスト]」では、コマンドを使う上での「書き方」が掲載されているだけで、具体的にそのコマンドをどういった場面で使うのかという「使い方」までは記載されていない。
そこで、こういった記事を書いてみたのだが、これが蓄積されていくと所謂「VRMスクリプト逆引き辞書」なるものをまとめ上げることが出来るだろう。しかし、どうも今求められているのはコレではないようである。まぁ、何処かしらに需要はあるだろうけど。