phpビット演算はPHPではあまり使用されませんが、非常に便利なPHPビット演算の使い方を紹介します。
$a & $b and (ビット単位の AND)
$a | $b or (ビット単位の OR)
$a ^ $b Xor (ビット単位の排他的 OR)
~$ a Not(ビット単位ではありません)
$a << $b 左シフト(左シフト)
説明$a & $b ビットごとの AND は、$a と $b の両方が 1 であるビットを 1 に設定します。
例:10 & 12 = 8
12 1100
1000 8
$a または、$ のいずれかを設定しますa または $b は 1 になります。
例: 10 | 12 = 14
10 1010
12 1100
1110 14
$a ^ $b ビットごとの XOR
例: 10 ^ 12
10 1010
12 1100
0110
~ビット単位の表記は $a の 0 を 1 に設定し、1 を 0 に設定します
例: ~10 =
10 1010 111111111111111111111111111111111 111111111111111111111110101 -11
$a $b を左に移動すると、$a の要素が左に移動します$b 回 (各移動は 2 を乗算することを意味します);
例: 1 << 10 = 1024
1(1) は 10 ビットを左に移動します 10000000000 (1024)
は 1*2 の 10 乗に相当します。 PHP に電源操作がないのは本当に憂鬱です。
$a >> $a の値を右に $b 回移動します (各移動は 2 で割ることを意味します)
例: 1024 <<2 = 1256
10000000000(1024) 2 ビットで 100000000 (256)
php は演算 $a & $b と (ビット単位の AND) $a | $b or (ビット単位の OR) $a ^ $b Xor (ビット単位の排他的 OR) ~$a Not (ビット単位) not) $a <<$b 左にシフト (左にシフト) $a >> $b 右にシフト (右にシフト)
$a と $b を結合する $a & $b の詳細説明両方とも 1 から 1 のビット; 例: 10 & 12 = 810 101012 1100 1000 8
$a | $b ビットごとの OR は、$a または $b の 1 であるビットを 1 に設定します。 1100 1110 14
$a ^ $b ビット単位の XOR の例: 10 ^ 1210 101012 1100 0110 6
~a ビット単位の NOT は、$a の 0 を 1 に設定し、1 を 1 に設定します。 例: ~10 = 10 1010 11111111111111111111111 1111111111111111111111111111111110101 -11
$ a << $b $a $b 回左に移動します (各移動は 2 を乗算することを意味します); 例: 1 < ;< 10 = 10241(1) 10 桁ずつ左にシフトします 10000000000(1024) *2 の 10 乗 PHP にべき乗演算がないのは本当に憂鬱です。
$a >> $b 右シフト $a を右に $b 回移動します (各移動は 2 で除算することを意味します) 例: 1024 << 2 = 125610000000000(1024) 右シフト 2 のビットは次の組み合わせです。 of 100000000(256)
PHPの
error_reportingのパラメータ値リスト
これをもう一度見てください。 value の値をバイナリに変換します。
値定数
0000 0001 E_ERROR0000 0010 E_WARNING
0000 0100 E_PARSE
0000 1000 E_NOTICE
0001 0000 E_CORE_ERROR
0010 E_CORE_WARN ING
.
.
.
... ...電力が 1 回追加されるごとに、1 桁がバイナリ システムに追加されました (コンピューターを勉強したことのあるほとんどの人はこれを知っています:)…)
注: 各オプションはビットに対応します (1 はオンを意味し、0 はオフを意味します)
それでは、パラメーターを設定する利点を見てみましょうこのような。
例として 3 つのパラメータを使用して効果を確認します
error_reporting(3);//decbin(3) == 0000 0011; (相当于设置 E_WARNING 和 E_ERROR ) error_reporting(4);//decbin(4) == 0000 0100;(相当于设置 E_PARSE ) error_reporting(5);//decbin(5) == 0000 0101;(相当于设置 E_PARSE 和 E_ERROR)
設定の取得:
特定の項目がオンになっているかどうかを判断するには、ビット演算を使用して取得できます (& - "AND" ルール、すべて 1 は 1 です) 、それ以外の場合は 0)
//E_PARSE
if($n & 4){//E_PARSE がオンになります
//4の 2 進数は 0100 です。3 番目のビットだけが 1 なので、「」を実行すると、 &" 演算
他の場合
すべては 0 に設定されます//したがって、$n の 3 番目のビットも 1 である場合にのみ結果が 0 より大きくなります。 //4(0100)、5(0101)、6(0110)、7(0111)など
}else{
//E_PARSEはオフです
//3番目のビットは0で、このオプションがオフであることを意味します
設定の変更: ($n は現在の 10 進数値を表します)
アプリケーション中に、必要に応じて特定のビットのスイッチを設定することがあります。
以下の使用法を参照してください。//E_PARSE 項目を閉じて、「&」「AND」ルールを使用します
$n = $n&(8192-4-1);
//なぜ 8191 を使用するのですか?
//これはオプションの数に関係します。このエラー表示マークは合計 13 ビットを使用します (4096 は 2 進数で 13 ビット)、8192 は (14 ビット) です。
//なぜマイナス 4 マイナス 1 なのでしょうか。 ?
//8192-4-1=8187。 (1111111111011) 2 進数は 13 桁で、使用する最大桁数と同じです。そして、3 番目のビットの対応する値は 0 です。
//この数値を使用して、1 ~ 4096 の間の任意の数値とビットごとの AND 演算を実行します。0 に設定される 3 番目のビットを除いて、他のビットの値は変更されません? "AND" ルール:)
//同様に、E_WARNING をオフにしたい場合
//$n = $n&(8192-2-1);
//E_PARSE 項目を有効にするには、'|' を使用しますOR" ルール
$ n = $n|4;
//上記の終了を読んだ後、開始についていくつかのアイデアが浮かぶかもしれません:)
// '|' - "OR" ルールには 1 が 1 として含まれ、それ以外の場合は 0 になります。
//上記はすべてのビットです。1 の場合、他のビットには影響しません。次に、すべてのビットが 0 の場合、他のビットには影響しません:)
//したがって、対応する値を設定するだけです。後続のオペランドの 2 進ビットを 1 にすると、他のビットはすべて 0 になり、問題ありません。
//見つけましたか?これは、それぞれの設定項目に対応する 10 進数値です:
以上がPHPのメディアン演算の使い方の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。