我在php.net上找到了這個函數。它似乎在正數上工作,但在負數上失敗:GMP位移對負數不起作用
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位數的值。
我也這麼認爲。然後我測試了它。 – 2011-01-26 01:16:05