>백엔드 개발 >PHP 튜토리얼 >[PHP] 비트 AND & 또는 XOR의 기본 사용 ^

[PHP] 비트 AND & 또는 XOR의 기본 사용 ^

little bottle
little bottle앞으로
2019-04-16 15:26:593575검색

비트 AND:
0&0=0; 1&0=0; 1&1=1;
비트 OR:
0|0=0; 1|0=1;
OR 기반의 비트별 XOR은 0:
0^0=0; 1^0=1; 1^1=0;

1입니다. 예를 들어 5이면 이진수로 변환한 숫자는 101입니다. 제가 직접 정의하고 왼쪽에서 오른쪽으로 셉니다.
첫번째 숫자가 1이면 특정 기능이 자동으로 전달된다는 의미입니다. 두 번째 자리는 0으로 자동 삭제가 꺼진 상태
세 번째 자리는 1로 자동 저장이 켜진 상태

2 세 번째 자리가 자동 저장 켜짐 여부를 판별하는 코드

($userStatus & pow(2,3-1))!=0

3.pow는 2의 2제곱을 이진수로 변환한 지수 표현식 함수는 0100이고, 0101과 0100의 비트별 AND는 0100이므로 십진수로 4이므로 0이 아니므로 true

4를 설정합니다. 특정 비트의 값을 1로 설정하려면 코드는


$userStatus | pow(2,3-1)

원래 값은 0001이므로 먼저 설정해야 합니다. 세 자리는 1,0001 | 0100은 0101

5로 설정됩니다. 특정 숫자를 0으로 하면 코드는

$userStatus ^ pow(2,3-1) 0101 ^ 0100 为0001

[추천 과정:

PHP 비디오 튜토리얼

]

function setStatus($source,$flag,$value){
        if (intval($value) == 1 || strcasecmp($value, 'on') == 0) {
            $value = 1;
        } else {
            $value = 0;
        }   

        $status = pow(2, $flag - 1); 
        $oldStat = (($source & $status) != 0); 
        if ($oldStat == $value) {
            return $source;
        }   
        if ($value) {
            $source |= $status;
        } else {
            $source ^= $status;
        }   
        return $source;
}
//001 转成 101 
var_dump(setStatus(1,3,'on'));//int(5)
//1101 转成 0101
var_dump(setStatus(13,4,0));//int(5) 
  

위 내용은 [PHP] 비트 AND & 또는 XOR의 기본 사용 ^의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제