php的位運算

2021-05-24 22:00:09 字數 1504 閱讀 2320

//位運算子

$a &= $b                                     $a = $a & $b    

$a |= $b                                      $a = $a | $b

$a^=$b                                     $a = $a ^ $b      

$a <<= $b                                   $a = $a << $b  

$a >>= $b                                   $a = $a >> $b     

各位運算子的解釋

例子                         名稱                                                 結果

$a & $b                 and(按位與)        將把 $a 和 $b 中都為 1 的位設為 1。

$a | $b                   or(按位或)           將把 $a 或者 $b 中為 1 的位設為 1。

$a ^ $b                  or(按位異或)         將把 $a 和 $b 中不同的位設為 1。

~ $a                      not(按位非)          將 $a 中為 0 的位設為 1,反之亦然。

$a << $b              shift left(左移)       將 $a 中的位向左移動 $b 次(每一次移動都表示「乘以 2」)。

$a >> $b               shift right(右移)     將 $a 中的位向右移動 $b 次(每一次移動都表示「除以 2」)。

以上運算中,可能位運算有點較難於理解,當然這需要你有十進位制轉成二進位制的基本知識才行。不然理解起來確實有點難度。

eg:$mark_1 = 3;

$mark_2 = 8;

$mark_2^=$mark_1;

echo $mark_2;

結果: 這將輸出「11」,此時$mark_2的型別仍為整型.

分析: 1 首先我把 3 與 8 都轉為二進位制如下(怎麼轉,自己學習哈喲 ^_^,我這裡就不寫了) :             

十進位制 ->       二進位制      ->     十進位制

3           ->       0011

8           ->       1000

按位運算後:        1011       ->        11

2   即:3與8轉為二進位制後,它們每一位上的二進位制值都相比較,如果不相同就設

置為'1',相同為0,所以運算後的二進位制結果為'1011',(另註:1100為12)而這就是十進位制就的11了。

3 ok? ^_^(其它位運算模擬)

php 位運算與許可權,PHP中的位運算和進製處理

php中的位運算和進製是比較冷門的知識,感覺很簡單也很好理解,但是在實際場景中卻很少使用,本篇博文就是簡單了解基本概念以及講解如何去實際使用.位運算php中的位運算子是對整形進行的操作,比如對於十進位制,二進位制,八進位制等數字的一些操作.按位與 and 按位或 or 按位取反 not 按位異或 x...

php位運算的許可權設計

位運算的運算物件是二進位制位,速度快,效率高,而且節省空間,位運算做許可權控制也相當的靈活。但是位運算有很大的侷限,位移不能超過32次,這就要求許可權的數量不超過32中。將許可權按照2的n次方來定義值,一次類推。為什麼要這個樣子定義,這個樣紙的定義是為了保證每個許可權值 二進位制 中只有乙個1,而它...

PHP位運算許可權設計

首先將許可權按照2的次方來定義值,依次類推 define add 1 增加許可權 define upd 2 修改許可權 define sel 4 查詢許可權 define del 8 刪除許可權 a access add upd sel del a擁有增刪改查許可權 b access add upd...