PHP位運算符的做用

轉自:http://www.ibihuo.com/show-63.html php

先來看看手冊裏位運算符的解釋: html

例子 名稱 結果
$a & $b And(按位與) 將把$a和$b中都爲 1 的位設爲 1。
$a | $b Or(按位同或) 將把$a和$b中任何一個爲 1 的位設爲 1。
$a ^ $b Xor(按位異或) 將把$a和$b中一個爲 1 另外一個爲 0 的位設爲 1。
~ $a Not(按位取反) 將$a中爲 0 的位設爲 1,反之亦然。
$a << $b Shift left(左移) 將$a中的位向左移動$b次(每一次移動都表示「乘以 2」)。
$a >> $b Shift right(右移) 將$a中的位向右移動$b次(每一次移動都表示「除以 2」)。

再看一個實際的列子加深理解: 函數

$a = 5; spa

$b = 2; debug

a & b = 0 (101 & 010)(至關於|的逆運算,如:13 = 8|5,那麼13&5結果是5,13&8結果是8) htm

a | b = 7 (101 | 010)(和加法運算相等) get

~a = -6 (~101)(這裏很差理解,能夠這樣記憶:~0=-1;~1=-2......~5=-6) it

a ^ b = 7 (101 ^ 010) io

a << b = 20 (101 << 010) table

a >> b = 1 (101 >> 010)
 
接下來和你們共享一下 位運算符在php的運用
一:ecshop裏面的init.php文件有些這樣的語句:
if ((DEBUG_MODE & 1) == 1)
{
    error_reporting(E_ALL);
}
else
{
    error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));
}
if ((DEBUG_MODE & 4) == 4)
{
    include(ROOT_PATH . 'includes/lib.debug.php');
}
ecshop用這樣的方式實現了不一樣的報錯方式
二: 賦予權限值
define(「DELETE」,8);//刪除
define(「UPLOAD」,4);//上傳
define(「WRITE」,2);//寫入
define(「READ」,1);//只讀
/*這是個權限斷定函數*/
function power($key)
{
       $str = '';
       if(($key&DELETE) == DELETE) $str .= '刪除,';
       if(($key&UPLOAD) == UPLOAD) $str .= '上傳,';
       if(($key&WRITE) == WRITE) $str .= '寫入,';
       if(($key&READ) == READ) $str .= '只讀,';
       if($str != '')
       {
            echo "您擁有:".rtrim($str,',').'權限';
       }
       else
       {
            echo "您沒有任何權限";
       }
}
//假如一我的的權限值爲7
power('7');
//結果: 您擁有:上傳,寫入,只讀權限
相關文章
相關標籤/搜索