PHP에서 변위 연산자는 일반 정수에 적합하지만 값이 정수 범위를 초과하면 정상 변위 작업이 실패하거나 오버플로됩니다. 이 제한을 해결하기 위해 GMP (GNU 다중 정밀도) 라이브러리를 사용할 수 있으며,이 라이브러리는 임의의 크기의 정수 작업을 지원하고 다수의 변위 작업을위한 안정적인 솔루션을 제공합니다.
대부분의 Linux 환경에서 GMP 확장은 패키지 관리자를 통해 설치할 수 있습니다.
<span class="fun">sudo apt-get 설치 PHP-GMP</span>
설치가 완료되면 Php.ini에서 GMP 확장자를 활성화하여 관련 구성 항목에 주석이 없는지 확인해야합니다.
<span class="fun">확장 = 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 확장을 사용하면 많은 숫자를 쉽게 변위 할 수 있으며 정수 오버플로와 정확도 손실을 효과적으로 피할 수 있습니다. 이 예제는 개발자가 모든 크기 정수의 변위 요구 사항을 쉽게 처리 할 수 있도록 기본 사용 방법을 보여줍니다.