一部の C コードを PHP に変換しているときに、特に右シフト演算子を使用しているときに問題が発生しました。
編集:次の例では、ビット = 0;
元の C コード:
p->param->outBits[bytePtr++] |= codeword >> (9 + bit);
PHP コード:
$outBits[$bytePtr++] |= $codeword >> (9 + $bit);
codeword
130728 から始めると、CI で予想される結果は -1 になります。PHP では 255 を取得します。これは、算術/論理シフトの違いと関係があることを理解しており、MSB がゼロのままであるために負符号が導入されていません。
シフトを含まないPHPで上記を行う「迅速な」方法はありますか?たとえば、基本的な算術などを介して、期待される答えが得られますか?