我遇到了一个问题,同时将一些C代码转换为PHP,特别是使用右移运算符。PHP右移和负面结果?
编辑:在下面的例子中,位= 0;
原始的C代码:
p->param->outBits[bytePtr++] |= codeword >> (9 + bit);
PHP代码:
$outBits[$bytePtr++] |= $codeword >> (9 + $bit);
如果我开始codeword
为130728,在C我得到的-1预期的结果。在PHP中,我得到了255.我知道这是与算术/逻辑移位差异有关的,并且由于MSB保持为零而不会引入负号。
有没有一种“快速”的方式在PHP中做到上述不涉及转移?例如通过基本算术或类似算法,这会给我预期的答案?
@stereofrog,刚刚意识到'outBits'内存是一个char的负载,因此8位,因此在结果上的差异 - 感谢指向我写一个快速测试案例! :-) – richsage 2009-11-15 13:30:26