我在将一些 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 中是否有不涉及转移的“快速”方法?例如,通过基本算术或类似方法,这会给我预期的答案吗?