この関数は 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
ネガで機能するように機能を修正するにはどうすればよいですか?
私が持っている2つのアイデア:
多分私はの線に沿って何かをすることができます
if (whatever) { $a >> $b} else{ gmp_shiftr($a, $b) }?
または、その値に応じて、負の結果から何かを差し引くことができるかもしれません..?
>> が与える値を取得したいだけでなく、GMP を使用するときに 32 ビットを超える数値でも取得したいのです。