ホームページ >バックエンド開発 >PHPチュートリアル >PHP ビットごとの AND (&) 演算子アプリケーションの実践

PHP ビットごとの AND (&) 演算子アプリケーションの実践

WBOY
WBOYオリジナル
2016-07-29 09:12:361426ブラウズ

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 &#39;%执行1千万次计算毫秒耗时:&#39;.($d-$c); //%执行1千万次计算毫秒耗时:1035

2. ユーザー権限の判断


システム内のユーザー権限割り当てモジュールが、権限を 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 チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。