我在 php.net 找到了这个函数。它似乎适用于正数,但对负数无效:
function gmp_shiftr($x,$n) { // shift right
return(gmp_div($x,gmp_pow(2,$n)));
}
echo -1 >> 8; //returns -1, presumably correctly
echo "<br />";
echo gmp_strval(gmp_shiftr(-1,8)); //returns 0, presumably incorrectly
如何修复该功能以使用底片?
我有两个想法:
也许我可以做一些类似的事情
if (whatever) { $a >> $b} else{ gmp_shiftr($a, $b) }?
或者,也许我可以根据它们的价值从负面结果中减去一些东西..?
我只想获得 >> 会给出的值,但在我使用 GMP 时也获得 >32 位数字的值。