代码之家  ›  专栏  ›  技术社区  ›  richsage

PHP右移和负结果?

  •  2
  • richsage  · 技术社区  · 15 年前

    我在将一些C代码转换为PHP时遇到了一个问题,特别是在使用右移运算符时。

    编辑:

    原始C代码:

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

    PHP代码:

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

    如果我从 codeword 作为130728,在C中我得到了预期的结果-1。在PHP中我得到了255。我知道这与算术/逻辑移位差有关,并且由于MSB保持在零,所以没有引入负号。

    在PHP中有没有一种不涉及转换的“快速”方法来完成上述操作?例如,通过基本的算术或类似的,这将给我预期的答案?

    1 回复  |  直到 9 年前
        1
  •  3
  •   inkredibl    15 年前

    您的问题是PHP没有类型 byte ,它只有 integer