Rosso Laboratory

Rosso Laboratory

主に鉄道模型シミュレーター(VRM)などの仮想鉄道アプリを扱うブログです。またHDR写真の記事も書いています。

論理演算

フラグ操作には欠かせないビット演算子の動作のまとめ

<論理否定 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スクリプト逆引き辞書」なるものをまとめ上げることが出来るだろう。しかし、どうも今求められているのはコレではないようである。まぁ、何処かしらに需要はあるだろうけど。