按位与与按位或的应用

1 echo $a = 2|4|8,PHP_EOL;
2 echo $a&8,PHP_EOL;//8
3 echo $a&4,PHP_EOL;//4
4 echo $a&2,PHP_EOL;//2
5 echo $a&16,PHP_EOL;//0
6 echo $a&32;//0

 

由结果看参与按位或运算的数(2的整数次幂)再与结果进行按位与运算结果为其本身,这是由于这两个操作符本身运算规则决定的,这个特点可以用于需记录和检查多种状态的场景。

 1 function astrpos($str,$needle)
 2 {
 3     $ret = [];
 4     $pos = 0;
 5     while(($pos = strpos($str, $needle, $pos)) !== false){
 6         $ret[] = $pos;
 7         $pos++;
 8     }
 9     return $ret;
10 }
11 
12 function powbase2($value) {
13     $bin = decbin($value);
14     
15     $indexes = astrpos($bin, '1');
16     $len = strlen($bin) -1;
17     $ret = [];
18     foreach($indexes as $index)
19     {
20         $ret[] = pow(2, $len-$index);
21     }
22     
23     return $ret;
24 }
25 
26 print_r(powbase2($a));//[2,4,8]

 反向解析函数,以便获取全部配置信息

posted on 2015-05-20 00:20  darkness_1  阅读(361)  评论(0编辑  收藏  举报

导航