php비트 연산은 PHP에서 일반적으로 사용되지 않지만 매우 유용한 PHP 비트 연산의 사용법을 소개하겠습니다.
$a & $b 및 (비트 AND)
$a | $b 또는 (비트 OR)
$a ^ $b Xor(비트 독점 OR)
~$ a Not(비트 단위 아님)
$a << $b 왼쪽 시프트(왼쪽 시프트)
$a >> $b 오른쪽 시프트(오른쪽 시프트)
상세 explain
$a & $b 비트별 AND는 $a와 $b에서 모두 1인 비트를 1로 설정합니다.
例:10 & 12 = 8
10 1010
12 1100
1000 8
$a $b 비트별 또는 $ 중 하나를 설정합니다. a 또는 $b는 1입니다.
예: 10 | 12 = 14
10 1010
12 1100
1110 14
$a ^ $b 비트별 XOR
예: 10 ^ 12
10 1010
12 1100
0110 6
~ 비트 표기법은 $a의 0을 1로 설정하고 1을 0으로 설정합니다. ; $b는 왼쪽으로 이동하여 $a의 요소를 왼쪽으로 이동합니다. $b번(각 이동은 2를 곱함을 의미) PHP에는 전원 동작이 없다는 점이 정말 우울합니다.
$a >> $b 오른쪽 시프트는 $a의 값을 오른쪽으로 $b번 이동합니다(각 이동은 2로 나누는 것을 의미함).
예: 1024 << 1256
10000000000(1024) 2비트 단위는 100000000입니다. (256)
php는 $a & $b 및 (비트 AND) $a | $b 또는 (비트 OR) $a ^ $b Xor(비트 배타적 OR) ~$a Not(비트 단위) 연산입니다. not) $a << $b 왼쪽 시프트(왼쪽 시프트) $a >> 오른쪽 시프트(오른쪽 시프트)
$a & $b 비트 AND에 대한 자세한 설명 $a와 $b를 설정합니다. 둘 다 1인 비트 예: 10 & 12 = 810 101012 1100 1000 8
$a | $b 비트별 OR은 $a 또는 $b에서 1인 비트를 1로 설정합니다. 1100 1110 14
$a ^ $b 비트별 XOR 예: 10 ^ 1210 101012 1100 0110 6
~a 비트별 NOT은 $a의 0을 1로 설정하고 1을 로 설정합니다. 예: ~10 = 10 1010 11111111111111111111111111 1111111111111111111111111111110101 -11
$ a << $a $b 번 왼쪽으로 이동합니다(각 이동은 2를 곱함을 의미함). 예: 1 << 10 = 10241(1) 왼쪽으로 10자리 이동 10000000000(1024)은 1과 같습니다. *2 10승을 올렸습니다. PHP에 거듭제곱 연산이 없다는 점은 정말 실망스럽습니다.
$a >> $b 오른쪽 시프트는 $a를 오른쪽으로 $b번 이동합니다(각 이동은 2로 나누는 것을 의미함). 예: 1024 << 2 = 125610000000000(1024) 비트는 다음과 같습니다. of 100000000(256)
플래그 비트 필드 및
비트 연산자
PHP의
error_reporting 매개변수 값 목록
USER_ERROR
이걸 다시 보세요. value의 값을 이진수로 변환합니다.
0000 0010 E_WARNING
0000 0100 E_PARSE0000 1000 E_NOTICE
0001 0000 E_CORE_ERROR0010 0000 E_CORE_WARN ING
.
.
.
... ...한 번 추가된 각 전력에 대해 한 자리 숫자는 다음과 같습니다. (컴퓨터를 공부한 거의 모든 사람들이 이것을 알고 있습니다 :)…)
참고: 각 옵션은 비트에 해당합니다(1은 켜짐을 의미하고 0은 꺼짐을 의미)
자, 매개변수 설정의 이점을 살펴보겠습니다. 이와 같이.
효과를 보려면 세 가지 매개변수를 예로 들어보세요
error_reporting(3);//decbin(3) == 0000 0011; (相当于设置 E_WARNING 和 E_ERROR ) error_reporting(4);//decbin(4) == 0000 0100;(相当于设置 E_PARSE ) error_reporting(5);//decbin(5) == 0000 0101;(相当于设置 E_PARSE 和 E_ERROR)
특정 항목이 켜져 있는지 확인하려면 비트 연산을 사용하여 해당 항목을 얻을 수 있습니다(& - "AND" 규칙, 모두 1은 1임). , 그렇지 않으면 0)
//E_PARSE
if($n & 4){//E_PARSE가 켜집니다
//4의 이진수는 0100입니다. 세 번째 비트만 1이므로 " &" 연산where else
모두 0으로 설정됨//따라서 $n의 세 번째 비트도 1인 경우에만 결과가 0보다 커집니다.
//예: 4(0100),5(0101),6(0110),7(0111)
}else{
//E_PARSE가 꺼져 있습니다//세 번째 비트가 0이므로 이 옵션이 꺼져 있음을 의미합니다 }
설정 변경: ($n은 현재 소수점 값을 나타냅니다.)
적용 중에 필요에 따라 특정 비트에 대한 설정을 전환할 수 있습니다.
아래 사용법을 확인하세요.
//E_PARSE 항목을 닫고 '&' “AND” 규칙을 사용하세요
$n = $n&(8192-4-1);
//8191을 사용하는 이유는 무엇인가요?
//옵션 개수와 관련이 있습니다. 이 오류 표시 표시는 총 13비트(4096의 이진수는 13비트)인 반면, 8192는 (14비트)입니다.
//왜 마이너스 4인가요? 마이너스 1?
//8192-4-1=8187. (1111111111011) 이진수는 13자리로 우리가 사용하는 최대 자릿수와 같습니다. 그리고 세 번째 비트의 해당 값은 0입니다.
//이 숫자를 사용하여 1에서 4096 사이의 숫자로 비트 AND 연산을 수행합니다. 0으로 설정되는 세 번째 비트를 제외하고 다른 비트의 값은 변경되지 않나요? "AND" 규칙:)
//마찬가지로 E_WARNING
//$n = $n&(8192-2-1);
//E_PARSE 항목을 활성화하려면 '|' OR" 규칙
$ n = $n|4;
//위의 종결 부분을 읽은 후 열기에 대해 몇 가지 아이디어를 얻을 수 있습니다.)
// '|' - "OR" 규칙은 1이 1이고, 그렇지 않으면 0입니다.
//위의 비트가 모두 1이면 다른 비트에는 영향을 주지 않습니다. 이제 모든 비트가 0이면 다른 비트에는 영향을 주지 않습니다.)
//그래서 해당 값만 설정하면 됩니다. 다음 피연산자의 이진 비트를 1로 설정하고 다른 비트는 영향을 받지 않습니다. 모든 위치는 0이므로 괜찮습니다.
//찾으셨나요? 이는 각 설정 항목에 해당하는 십진수 값입니다.
위 내용은 PHP 중앙값 연산 사용법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!