비트 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이 아니므로 true4를 설정합니다. 특정 비트의 값을 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!