我可以知道如何使用 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
最佳答案
/**
* The >>> javascript operator in php x86_64
* Usage: -1149025787 >>> 0 ---> rrr(-1149025787, 0) === 3145941509
* @param int $v
* @param int $n
* @return int
*/
function rrr($v, $n)
{
return ($v & 0xFFFFFFFF) >> ($n & 0x1F);
}
/**
* The >> javascript operator in php x86_64
* @param int $v
* @param int $n
* @return int
*/
function rr($v, $n)
{
return ($v & 0x80000000 ? $v | 0xFFFFFFFF00000000 : $v & 0xFFFFFFFF) >> ($n & 0x1F);
}
/**
* The << javascript operator in php x86_64
* @param int $v
* @param int $n
* @return int
*/
function ll($v, $n)
{
return ($t = ($v & 0xFFFFFFFF) << ($n & 0x1F)) & 0x80000000 ? $t | 0xFFFFFFFF00000000 : $t & 0xFFFFFFFF;
}
好好享受吧。
关于PHP 等效的 javascript >>> 使用零填充按位运算符右移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2642026/