• ベストアンサー

php と C# の ビット演算

PHPでビット演算をしていますが、 PHPでたとえば、 c = a >> b でビット演算した値と、 C#で演算した値と aの値を大きくした場合、 4000000000以上? は結果が違ってきます。 C#とPHPではビット演算のアルゴリズムが違うのでしょうか? よろしくお願いします。

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

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

単純に、値のバイト数が違うからじゃないでしょうか。 phpでは、整数リテラルは一般に32ビットです。が、C#の場合、整数リテラルは、int、uint、long、ulong のうち、その値を表すことができる最初の型になります。従って、32ビットで収まりきれない整数リテラルは自動的に64ビットのlongとして内部的に扱われます。 このため、32ビットで収まりきれない整数リテラルを使ったとき、内部的なバイト数が違うためにビット演算した結果が違ってくるんじゃないでしょうか。

ENTRE
質問者

補足

ありがとうございます。 ちなみにこれをC#で同じように求めるには、 C#でどのようコーディングしたらいいのでしょうか? よろしくお願いします。

その他の回答 (1)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

> は結果が違ってきます。 どんな数値で演算を行なったときに どんな風に結果が異なるかを PHPとC#の双方について 具体的に示していただけますか?

ENTRE
質問者

補足

失礼致しました。 ソースコード 1000000000 >> 12; 1000000000 >> 13; 10000000000 >> 12; 10000000000 >> 13; C#の場合 244140 122070 2441406 1220703 PHPの場合 244140 122070 344254 172127 となってしまいます。 10000000000以上だと、値が違ってきてしまいます。。。