ビット演算にはビット演算子を使用します。GML で利用できるビット演算子は六つ。
& | | | ^ | ~ | << | >> |
---|---|---|---|---|---|
ビットAND | ビットOR | ビットEOR(XOR) | ビットNOT | 左シフト | 右シフト |
基本的には整数型の変数値に対してビット操作を行うため利用されます。
左ビットシフト
ビットを左へ移動させます。
ここではまず POW2 (二の累乗)を思い出してください。
上記サンプルでは二の累乗を出力すると同時に二進数へ変換しています。
二進法は二の累乗で桁上がりします。桁上がりでは 1 という符号が左に一個移動します。1 ビット左へビットを移動する左シフトを使って、ループ処理で二の累乗を表現しています。
結果だけ見ると 1 ビット左シフトは、算術演算子を使った計算で値を二倍した時と同じ結果を得られます。しかし処理速度はシフト演算子を使った方が速いです。
右ビットシフト
ビットを右へシフト。
演算子を使った計算だと除算と同じ結果を得られます。
変数型に対する処理系依存があるため、コンパイラを使う場合には GML でこのビット演算を積極的に使うべきかは悩ましい。