【发布时间】:2011-02-08 04:19:00
【问题描述】:
我可以知道我该怎么做 PHP >>> 吗?此类运算符在 PHP 中不可用,但在 Javascript 中可用。
我刚刚发现一个函数如下:
function zeroFill($a, $b)
{
$z = hexdec(80000000);
if ($z & $a)
{
$a = ($a>>1);
$a &= (~$z);
$a |= 0x40000000;
$a = ($a>>($b-1));
}
else
{
$a = ($a>>$b);
}
return $a;
}
但不幸的是,它并不完美。
例如:-1149025787 >>> 0 Javascript 返回 3145941509 PHP zeroFill() 返回 0
【问题讨论】:
-
你能描述一下它出了什么问题吗?
-
@incrediment:在近百个结果中只有 1 个不正确:-1149025787 >>> 0 在 javascript 中返回 3145941509 但在上面的 zeroFill() 中,它只返回 0。
-
zeroFill 在 64 位上不起作用,知道为什么吗?
标签: php bit-manipulation bit-shift zerofill