码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-07-13 11:51:27      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

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

| 按位或,
^ 按位异或,不相同的都算成1**
PHP按位与或 (^ 、&)运算也是很常用的逻辑判断类型,有许多的PHP新手们或许对此并不太熟悉,今天结合一些代码对PHP与或运算做些介绍,先说明下,在PHP中,按位与主要是对二进制数操作:

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

十进制1换算成二进制为:00000001
十进制2换算成二进制为:00000010
按位^ 00000011,就是把不相同的都算成1,然后:

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

十进制3换算成二进制为:00000011
十进制1换算成二进制为:00000001
按位& 00000001,就是各个位数相同的不变,否则都算成0,按位“&”后返回值是没意义的,主要是用来判断$a 是否存在于 $c,权限用法比较多:

<?php
$my_privilege = 15; // 1+2+4+8 拥有全部权限
$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

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

标签:

原文地址:http://www.cnblogs.com/justlikeheaven/p/5666270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!