按位与,按位异或,按位取反

**& 按位与,相同的不变,不然都算成0 

| 按位或,
^ 按位异或,不雷同的都算成一\
*
PHP按位与或 (^
、&)运算也是很常用的逻辑判断项目,有很多的PHP新手们大概对此并不太熟稔,先天组成1些代码对PHP与或运算做些介绍,先证实下,在PHP中,按位与重若是对二进制数操作:*

<?php
$a = 1;
$b = 2;
$c = $a^b;
echo $c // 3
?>

十进制1换算成2进制为:00000001
拾进制2换算成二进制为:00000010
按位^ 0000001一,正是把不等同的都算成一,然后:

<?php
$a = 1;
$b = 2;
echo $a & $c; // 1
?>

十进制三换算成贰进制为:0000001一
10进制一换算成二进制为:0000000壹
按位&
00000001,正是各种位数相同的不变,不然都算成0,按位“&”后重返值是没意义的,首若是用来判断$a
是或不是存在于 $c,权限用法比较多:

<?php
$my_privilege = 一伍; // 壹+贰+肆+八 拥有全方位权力
$Pri = ”;
$privilege_arr = array(8=>’增’, 4=>’删’,2=>’改’,1=>’查’);
foreach($privilege_arr as $k =>$v){
$k & $my_privilege && $Pri .= ‘我有’.$v.’的权力<br>’;
}
echo $Pri;
?>

由此贰个值就足以区分出许多字段
> $a = hexdec(‘0x10c04000’);
> $b = ($a & 0x0FF00000) >20;
> $c = ($a & 0x000FF000) >12;
> var_dump($a, $b, $c);
> 输出:
> int 281034752
> int 12
> int 4

相关文章