新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2009-06-01

[Perl]xor(^)演算子における注意

32bitシステムにおける"^"演算の結果は、正確さが保証されていない。


$ perl -le 'print int(3210987654^999900001010)'
998341671540
$ uname -m
x86_64



$ perl -le 'print int(3210987654^999900001010)'
1083979641
$ uname -m
i686


ビットシフト等も同様なので、要注意。

どうしても32bitシステムで事を成したいのであれば、Math::BigInt::GMP等のモジュールを利用するのが無難。

0 件のコメント: