php的按位计算及计算器计算方法

阿哈
2014-12-24

位运算符允许对整型数中指定的位进行求值和操作。

  $a & $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 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 | $b Or(按位同或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。
 $a ^ $b Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
十进制 1换算成二进制  00000001
十进制 2换算成二进制  00000010
按位^                           00000011   // 就是不相同的都算成1 啦 ^_^
十进制结果 = 3

 ~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。
$a << $b Shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
假定变量 
$a  的值是  3,$b  的值是  2。
那么  $a  在内存中的存放的格式是:
00000000 00000000 00000000 00000011
每执行一次左移,都将所有的位向左移动,右边补零,左边超过的舍弃。
所以  $a  左移  得到的是:
00000000 00000000 00000000 00001100
也就是  12。相当于  3 × 2 × 2 = 12。

 $a >> $b Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。
假定变量 
$a  的值是  24,$b  的值是  2。
那么  $a  在内存中的存放的格式是:
00000000 00000000 00000000 00011000
每执行一次右移,都将所有的位向由移动,右边超过的舍弃,左边空出的位补零。
所以  $a  右移  得到的是:
00000000 00000000 00000000 00000110
也就是  6。相当于  24 ÷ 2 ÷ 2 = 6。

计算时将计算器选择为“程序员型”,如图
十六进制的计算,如: 0x01 0x02 0x11 0x代表十六进制,后位进行计算

版权声明: 一起游平台版权声明 侵权联系:邮箱:163828@qq.com
5446000