• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:排他的論理和について)

PHPで排他的論理和を使うと挙動が異なる理由は?

このQ&Aのポイント
  • PHPで排他的論理和を使っていると、一部のサーバでは予期しない結果が返ってきてしまうことがあります。
  • 排他的論理和は、2つの数値のビットごとの排他的な論理和を計算する演算子です。
  • PHPのビット演算子は、サーバの環境によって挙動が異なることがあるため、注意が必要です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

CPUが32ビットとか64ビットとかいう話を耳にしますよね。 要するに、幾らでも大きな数を表現出来るわけではないということです。 どこまで表現出来るかはそのマシーン次第。 最近は64ビットも多いけど、普通は32ビット。 というわけで、No.1にも書きましたが、 ご質問のパターンは、多くの場合、正しく計算できません。 それについてはこのあたりに書いてあるようです。 http://www.php.net/manual/ja/language.types.integer.php でもって、本当にそのような大きな数の計算を行いたいのであれば、 http://www.php.net/manual/ja/ref.bc.php を使えとも書いてありますね。

fedorars
質問者

お礼

お礼が遅くなりました。 大変申し訳ございません。 CPUのビット数まで考慮する必要があったんですね。 普段しない計算だったので、大変勉強になりました。 解決はしていませんが・・・ これからも、調べてみます。 ありがとうございました。

その他の回答 (1)

回答No.1

その処理系での整数が32ビットなのか64ビットなのかの違いですね。 64ビットで計算すると-1454008551、32ビットだと-2147322696だと思われ。 細かい仕様は知りませんが、5748825183は32ビット超えてるので、その時点で何か考えなくてはならないに一票。

関連するQ&A