Я нашел эту функцию на 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) }?
Или, может быть, я мог бы вычесть что-то из отрицательных результатов в зависимости от их значения ..?
Я просто хочу получить значение, которое >> даст, но также получить его для> 32-разрядных чисел, когда я использую GMP.