chikuchikugonzalezの雑記帳

趣味とか日記とかメモとか(∩゚д゚)

MUGENでシフト演算

シフト演算子である<<とか>>はMUGENに用意されてないので、別の方法でできないかなー、とか考えてました。基本右シフトは2で割る、左シフトは2を掛けると考えられるので、とりあえず2の累乗倍で掛けたり割ったりすればいいかなと思ったのですが、どうも負数だともうちょい考えないと無理っぽい。
とゆーのもirb

irb(main):004:0> -42 >> 3
=> -6

となったものが

  • 42 >> 3 (3bit right shift) = -5

となったので。

あとビット演算子でのNOTに「~」があるらしいですが、なんか「malformed expression」とか言われて使えないんですが。

追記 負数の右シフト方法

こうすればできるっぽい

((-789 ^ -1) / 16) ^ -1 ; ==> -50

^ (XOR) 演算子を使って-1 (全ビット1) と排他的論理輪を行うと、ビット反転をさせることが出来るのでその状態で通常の右シフト。そしてさいごにもう一回反転させて符号ビットを再現…でいいらしい。もうチョイいい方法求む。