ビット演算にはビット演算子を使用します。GML で利用できるビット演算子は六つ。
& | | | ^ | ~ | << | >> |
---|---|---|---|---|---|
ビットAND | ビットOR | ビットEOR(XOR) | ビットNOT | 左シフト | 右シフト |
基本的には整数型の変数値に対してビット操作を行うため利用されます。
記号の読み方
- & = アンパサンド(ampersand)
- | = パイプ記号(パイプライン)
- ^ = キャレット(ハット/サーカムフレックス/アクサンシルコンフレックスなど複数)
- ~ = チルダ(tilde)
あとちょっとここから GML を捨てます宣言。python コンソールで説明させてください。GML を使った場合にも結果は同じですが、GM:S では出力結果を出すのが少し面倒なのです。
ビットAND(ビット積)
左辺と右辺のビットを比較して、左辺右辺両方のビットが1の時に1を返します。
それ以外は全て 0 でマスクされます。
[column width=”48%” spacing=”4%”]
31 の二進数は 11111 4 の二進数は 100 31 & 4 は 11111 & 00100 である
[/column][column width=”48%”]
11111 & 00100 ------- 00100 結果 31 & 4 == 4 となる。
[/column]
[end-columns]
ビットOR(ビット和)
左辺と右辺のビットを比較して、左辺右辺どちらかのビットが1の時に1を返す。
[column width=”48%” spacing=”4%”]
16 の二進数は 10000 7 の二進数は 111 16 | 7 は 10000 | 00111 である
[/column][column width=”48%”]
10000 | 00111 ------- 10111 結果 16 | 7 == 23 となる。
[/column]
[end-columns]