【发布时间】:2011-01-26 00:31:32
【问题描述】:
我在 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 位数字。
【问题讨论】:
标签: php bit-manipulation bitwise-operators gmp