gpt4 book ai didi

PHP右移和负结果?

转载 作者:行者123 更新时间:2023-12-04 07:01:42 25 4
gpt4 key购买 nike

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

编辑:在以下示例中,位 = 0;

原始 C 代码:

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

PHP代码:
$outBits[$bytePtr++] |= $codeword >> (9 + $bit);

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

是否有一种“快速”的方式在 PHP 中执行上述操作而不涉及转换?例如,通过基本算术或类似方法,这会给我预期的答案吗?

最佳答案

您的问题是 PHP 没有类型 byte ,它只有integer通常是 32 位(不是 8 位),所以如果你真的需要负值(无论如何这些位都是正确的,因为无符号 255 与有符号 -1 相同),那么你应该添加缺少的 24 位或使用算术恢复负值(255 是 -1,254 是 -2 等等,即 256 - x = -x)。

关于PHP右移和负结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1737449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com