- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:排他的論理和について)
PHPで排他的論理和を使うと挙動が異なる理由は?
このQ&Aのポイント
- PHPで排他的論理和を使っていると、一部のサーバでは予期しない結果が返ってきてしまうことがあります。
- 排他的論理和は、2つの数値のビットごとの排他的な論理和を計算する演算子です。
- PHPのビット演算子は、サーバの環境によって挙動が異なることがあるため、注意が必要です。
- みんなの回答 (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 を使えとも書いてありますね。
その他の回答 (1)
- nezumi0t0k0
- ベストアンサー率70% (12/17)
回答No.1
その処理系での整数が32ビットなのか64ビットなのかの違いですね。 64ビットで計算すると-1454008551、32ビットだと-2147322696だと思われ。 細かい仕様は知りませんが、5748825183は32ビット超えてるので、その時点で何か考えなくてはならないに一票。
お礼
お礼が遅くなりました。 大変申し訳ございません。 CPUのビット数まで考慮する必要があったんですね。 普段しない計算だったので、大変勉強になりました。 解決はしていませんが・・・ これからも、調べてみます。 ありがとうございました。