2

一部の C コードを PHP に変換しているときに、特に右シフト演算子を使用しているときに問題が発生しました。

編集:次の例では、ビット = 0;

元の C コード:

p->param->outBits[bytePtr++] |= codeword >> (9 + bit);

PHP コード:

$outBits[$bytePtr++] |= $codeword >> (9 + $bit);

codeword130728 から始めると、CI で予想される結果は -1 になります。PHP では 255 を取得します。これは、算術/論理シフトの違いと関係があることを理解しており、MSB がゼロのままであるために負符号が導入されていません。

シフトを含まないPHPで上記を行う「迅速な」方法はありますか?たとえば、基本的な算術などを介して、期待される答えが得られますか?

4

1 に答える 1