フラグ管理をビットで管理しようとしているのですが、
ビット演算が思ったような出力になりません。
マニュアルを見ながらやっているのですが使い方間違っていますでしょうか。。?
それともこのような出力が正しいのでしょうか。。?
Runtime v2.3.7.476
コード
var a = 10000000;
show_debug_message(a);
var b = 10101010;
show_debug_message(b);
var c = a | b;
show_debug_message(c); // 10101010
var d = a & b;
show_debug_message(d); // 10000000
var e = a ^ b;
show_debug_message(e); // 00101010
出力
10000000
10101010
10139538
9961472
178066
var a = 10000000; // これは10進数の10000000であり、2進数の100110001001011010000000です
var b = 10101010; // これは10進数の10101010であり、2進数の100110100010000100010010です
var c = a | b; // 100110001001011010000000 | 100110100010000100010010 として演算されます。
結果は、100110101011011110010010です。
2進数の100110101011011110010010は10進数で10139538です。
show_debug_message(c); // ここで10進数の10139538が出力されます
ということだと思います。
このツールが分かりやすいので、確認してみてください。
https://yanohirota.com/bitwise-operator/
なるほど。
2進数で定義した気でいましたが、言われたらどう見ても10進数ですよね。
javaとかの「0b」のようなのがGMLにあれば便利なんだけどなぁ。。
ひとまず原因がわかってよかったです。ありがとうございます!
>javaとかの「0b」のようなのがGMLにあれば便利なんだけどなぁ。。
私も今回マニュアルを見て混乱しました。で、GMLでは2進数で記述する方法が無いのか!?となりました。
他の言語でどうなってるか分かってないのですが、GMLもモダンな形に進化してほしいですね。