ホームページ  >  記事  >  バックエンド開発  >  PHPのメディアン演算の使い方の紹介

PHPのメディアン演算の使い方の紹介

怪我咯
怪我咯オリジナル
2017-06-20 13:32:011765ブラウズ

phpビット演算はPHPではあまり使用されませんが、非常に便利なPHPビット演算の使い方を紹介します。

  • $a & $b and (ビット単位の AND)

  • $a | $b or (ビット単位の OR)

  • $a ^ $b Xor (ビット単位の排他的 OR)

  • ~$ a Not(ビット単位ではありません)

  • $a 0e3ba483347de9fc058554bd99ff9a7c> $b 右シフト(右シフト)

説明$a & $b ビットごとの AND は、$a と $b の両方が 1 であるビットを 1 に設定します。

例:10 & 12 = 8

10 1010

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 1(1) は 10 ビットを左に移動します 10000000000 (1024)
は 1*2 の 10 乗に相当します。 PHP に電源操作がないのは本当に憂鬱です。
$a >> $a の値を右に $b 回移動します (各移動は 2 で割ることを意味します)
例: 1024 0fa652308d3e6c3c6b10cc45f99a1933> $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 001815f008280362827686417599b803> $b 右シフト $a を右に $b 回移動します (各移動は 2 で除算することを意味します) 例: 1024

フラグビットフィールドと
ビット演算子

PHPの
error_reportingのパラメータ値リスト

  • 1 E_ERROR

  • 2 AR NING

  • 4 E_PARSE

  • 8 E_NOTICE

  • 16 E_CORE_ERROR



  • 32 E_CORE_WARNING


  • 64 E_COMPILE_ ERROR


  • 128 E_COMPILE_WARNING


  • 256 E_

    USER_ERROR

  • 512 E_USER_WARNING


  • 1024 E_USER_NOTICE


  • 2047 E_ALL

  • 2048 E_STRICT

  • 40 96 E_RECOVERABLE_ERROR
  • value の値がすべて飛んでいることがわかり、 all 2のn+1乗です

これをもう一度見てください。 value の値をバイナリに変換します。

値定数

0000 0001 E_ERROR

0000 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 サイトの他の関連記事を参照してください。

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