ホームページ >バックエンド開発 >PHPチュートリアル >PHP ビットごとの AND (&) 演算子アプリケーションの実践
PHP のビット単位の AND 演算は、数値をビット演算のバイナリ形式に変換することです。
PHPマニュアルの説明は、
$a & $b | And (ビット単位の AND) | は、$a と $b の両方とも 1 対 1 のビットを設定します。 |
1. &(パリティ判定)の演算方法
整数と「1」のビットごとのAND演算を行い、演算結果は偶数であることを意味する「0」となります。結果は「1」となり、奇数であることを意味します。
$a = 3&1; echo '3&1:'.$a ; //<span style="font-family: Simsun;font-size:14px;">3&1:1</span> echo '<br>'; $b = 4&1; echo '4&1:'.$b; //<span style="font-family: Simsun;font-size:14px;">4&1:0</span>3 と 1 は 2 進数に変換され、
'3' 2 進数: 11
'1' 2 進数: 01 になります。すると、3&1 の 2 進数演算結果は 01 になり、10 進数に変換すると '1' になります。 : 100
'1' 2 進数: 001 4&1 の 2 進演算結果は 000 で、10 進数に変換すると '0' になります。
PS: '%' (モジュロ演算) シンボルはパリティの計算にも使用できます。 , 「3%」 「2」の出力結果は1、「4%2」の出力結果は0となります。 「%」演算子は「&」演算子よりも若干演算効率が高くなります。
function getMillisecond() { list($t1, $t2) = explode(' ', microtime()); return (float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000); } /* 判断数字的奇偶性 */ $a = getMillisecond(); for($i=1;$i<10000000;$i++) $i&1; $b = getMillisecond(); echo '&执行1千万次计算毫秒耗时:'.($b-$a); //&执行1千万次计算毫秒耗时:1068 echo '<br>'; $c = getMillisecond(); for($i=1;$i<10000000;$i++) $i%2; $d = getMillisecond(); echo '%执行1千万次计算毫秒耗时:'.($d-$c); //%执行1千万次计算毫秒耗时:10352. ユーザー権限の判断
システム内のユーザー権限割り当てモジュールが、権限を 1=>view、2=>add、4=>modify、8=>delete、に設定すると仮定します。そのため、ユーザー権限を保存するには、整数をデータベースに保存するだけでよく、区切られた文字列を保存する必要はありません。
ユーザーが追加および表示権限を持っている場合、関数コードは 1+2 = 3、ユーザーがすべての権限を持っている場合、関数コードは 1+2+4+8 = 15 です。は 12 です
ユーザー権限に変更権限があるかどうかを確認します: 12&4。結果は 4 で、変更権限があることを意味します。
ユーザーに新しい権限があるかどうかを確認します: 12&2 結果は 0 で、新しい権限がないことを意味します。
データベース内の変更権限を持つすべてのユーザーを検索します: select * from user where (user_mod&4) > 変更権限を持つすべてのユーザーを検索します。
上記は、PHP のビットごとの AND (&) 演算子の応用実践を、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。