轉自: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');
//結果: 您擁有:上傳,寫入,只讀權限