カテゴリー
未分類

16進数演算

icon_flash8.jpgこれなんかものすごく初歩的なミスかもしれないのですが、はまり中。

a = 0xeeeeeeee;
b = a/2;
trace([b, b.toString(16)]);
b = Math.round(b);
trace([b, b.toString(16)]);
[output]
2004318071,77777777
2004318071,77777777

特になし。で、端数がでるものをMath.roundで丸めてみる

a = 0xffffffff;
b = a/2;
trace([b, b.toString(16)]);
b = Math.round(b);
trace([b, b.toString(16)]);
[output]
2147483647.5,7fffffff
2147483648,-(0000000

丸めないのはまぁ予想通り。余計な親切心で丸めた結果のものは-(0000000となった。えーっとこれは何だろう?0x80000000だと思ったりしたんだけど、何故に“(“なのだろう?なんか基本的な16進数の考え方が間違っているのだろうか?が回らない・・・・。