PHPでは、変位演算子は通常の整数に適していますが、値が整数範囲を超えると、通常の変位操作が失敗またはオーバーフローします。この制限を解決するために、GMP(GNU複数精度)ライブラリを使用できます。これは、任意のサイズの整数の操作をサポートし、多数の変位操作に信頼できるソリューションを提供します。
ほとんどのLinux環境では、GMP拡張機能をパッケージマネージャーからインストールできます。たとえば、:
<span class="fun">sudo apt-getインストールphp-gmp</span>
インストールが完了したら、PHP.iniでGMP拡張機能を有効にして、関連する構成アイテムがコメントされないようにする必要があります。
<span class="fun">extension = gmp</span>
PHPサービスを再起動した後、 PHP -M |を実行しますGREP GMP GMP拡張が正常にロードされているかどうかを確認します。
GMPライブラリは、多数の変位を実装するための柔軟な機能を提供します。次の例は、2の電力を掛けて分割することにより、変位操作をシミュレートする方法を示しています。
<?php
$number = gmp_init("12345678901234567890"); // 多数を初期化します
// 左に移動します2少し
$shiftedLeft = gmp_mul($number, gmp_pow(2, 2));
// 向右少し移3少し
$shiftedRight = gmp_div($number, gmp_pow(2, 3));
echo "元の値:" . $number . "\n";
echo "左に移動します2少し后的结果:" . $shiftedLeft . "\n";
echo "向右少し移3少し后的结果:" . $shiftedRight . "\n";
?>
上記のコードでは、最初に、文字列の形式の多数がGMP_INITを介してGMPオブジェクトに変換されます。 GMP_MULとGMP_POWを組み合わせることにより、左シフトは2を掛けた力に相当します。 GMP_DIVによると、正しいシフトは2で割る力と同等です。
PHPのGMP拡張機能を使用すると、大量の数値を簡単に移動させ、整数のオーバーフローと精度の損失を効果的に回避できます。この例は、開発者があらゆるサイズの整数の変位要件を簡単に処理できるようにするための基本的な使用方法を示しています。