Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in die Verwendung der PHP-Median-Operation

Einführung in die Verwendung der PHP-Median-Operation

怪我咯
怪我咯Original
2017-06-20 13:32:011764Durchsuche

phpBitoperationen werden in PHP nicht häufig verwendet, sind aber sehr nützlich. Lassen Sie uns die Verwendung von PHP-Bitoperationen vorstellen.

  • $a & $b und (bitweises UND)

  • $a |. $b oder (bitweises ODER)

  • $a ^ $b

  • $a 83e4589b2c9aaa91702a677161bd1390> $b, die beide 1 zu 1 sind;

  • 10 1010
  • 12 1100
  • 1000 8

    $a |. $b Bitweises ODER setzt entweder $a oder $b zu 1;

    Beispiel: 10 |. 12 = 14
  • 10 1010
12 1100

1110 14$a ^ $b Bitweises XORBeispiel: 10 ^ 12
10 1010
12 1100

0110 6
例:10 & 12 = 8
~a Bitweise Notation setzt die 0 in $a auf 1 und die 1 auf 0

Beispiel: ~10 =
10 1010. 11111111111111111111111111111111 111111111110101 -11
$a fbe5dfd0eae503e19ca9144ca0e066ab> $b-Rechtsverschiebung verschiebt den Wert in $a nach rechts $b (jede Bewegung bedeutet Division durch 2); 10000000000(1024) Eine Verschiebung um 2 Bits nach rechts ist 100000000(256)
php ist die Operation $a & $b und (bitweises UND) $a |. $b oder (bitweises ODER) $a ^ $b Xor( Bitweises XOR )~$a Nicht (bitweise nicht) $a 2d3685053334711fba4d0e8187cd3e75> setzt die Bits, die in $a und $b beide 1 sind, auf 1; Beispiel: 10 & 12 = 810 101012 1100 1000 8
$b Bitweises ODER setzt die Bits in $a oder $b auf einen Wert von 1 ist auf 1 gesetzt; Beispiel: 10 |. 12 = 1410 101012 1100 1110 14
$a ^ $b Bitwise 1, und die 1 ist auf 0 gesetzt. Beispiel: ~10 = 10 111111111111111111111111111111111111111111111111110101 -11
$a << $b Bewegen Sie sich nach links zu $a, um sich $b mal nach links zu bewegen (jede Bewegung bedeutet multiplizieren mit 2); Beispiel: 1 << 10 = 10241(1) Eine Verschiebung um 10 Ziffern nach links 10000000000(1024) entspricht 1*2 in der 10. Potenz. Es ist wirklich deprimierend.
$a > Die Verschiebung um 2 Bits beträgt 100000000(256)



Die Kombination aus Flag-Feld und
Bit-Operator




in PHP Liste der Parameterwerte für error_reporting




1 E_ERROR



2 E_WARNING

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

  • 4096 E_RECOVERABLE_ERROR

  • Ich finde, dass die Wertwerte alle springen und alle 2 hoch n+1 sind


    Schauen Sie sich Folgendes an. Wandeln Sie den Wert von value in einen Binärwert um.

  • Wertkonstante
  • 0000 0001 E_ERROR

    0000 0010 E_WARNING
    0000 0100 E_PARSE

    0000 1000 E_NOTICE
  • 0001 0000. E_CORE_ERROR
  • 00 10 0000 E_CORE_WARNING

    .
    .

    .
  • … …Jedes Mal, wenn eins zur Potenz addiert wird, wird eine Ziffer zum Binärsystem hinzugefügt (das weiß fast jeder, der sich mit Computern beschäftigt hat:)…)
  • Hinweis: Jede Option entspricht eine Ziffer (1 ist Einschalten, 0 zum Ausschalten)

    Okay, werfen wir einen Blick auf die Vorteile der Einstellung solcher Parameter.
Nehmen Sie drei Parameter als Beispiel, um den Effekt zu sehen

Einstellungen abrufen:

Die Beurteilung, ob ein bestimmtes Element aktiviert ist, kann mithilfe von Bitoperationen erhalten werden (& – „AND“-Regel bedeutet, dass alle 1 1 sind, andernfalls ist es 0)

//E_PARSE
if($n & 4){
//E_PARSE ist aktiviert
//4 Die Binärzahl ist 0100, da nur das dritte Bit 1 ist. Wenn also die Operation „&“ ausgeführt wird, werden
andere
Positionen alle auf 0 gesetzt
// Daher nur das dritte Das Bit von $n ist ebenfalls 1 und das Ergebnis ist größer als 0.
//So wie 4(0100),5(0101),6(0110),7(0111)
}else{
//E_PARSE ist geschlossen

//Das dritte Bit ist 0 Zeigt an, dass diese Option deaktiviert ist

}

Einstellungen ändern: ($n stellt den aktuellen Dezimalwert dar)

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)
Während der Anwendung können wir den Schalter nach Bedarf auf ein bestimmtes Bit einstellen.

Siehe Verwendung unten.

//Schließen Sie das E_PARSE-Element und verwenden Sie die „AND“-Regel „&“
$n = $n&(8192-4-1);
//Warum 8191 verwenden?
//Dies hat etwas mit der Anzahl der Optionen zu tun, die Sie haben. Diese Fehleranzeigemarkierung verwendet insgesamt 13 Bits (4096 ist 13 Bits in Binärform), während 8192 (14 Bits) ist.
// Warum wird es um 4 oder 1 reduziert?
//8192-4-1=8187. (1111111111011) Die Binärzahl besteht aus 13 Ziffern, was der maximalen Anzahl von Ziffern entspricht, die wir verwenden. Und der entsprechende Wert im dritten Bit ist 0.
//Verwenden Sie diese Zahl, um eine bitweise UND-Verknüpfung mit einer beliebigen Zahl zwischen 1 und 4096 durchzuführen. Mit Ausnahme des dritten Bits, das auf 0 gesetzt wird, ändern sich die Werte anderer Bits nicht? „UND“-Regel:)
//Ähnlich, wenn Sie E_WARNING ausschalten möchten
//$n = $n&(8192-2-1);

//Um das einzuschalten E_PARSE-Element, verwenden Sie die „OR“-Regel „|“
$n = $n|4;
//Nachdem Sie den obigen Abschluss gelesen haben, haben Sie möglicherweise einige Ideen zum Öffnen:)
// '| ' — „ODER“-Regel Wenn 1 vorhanden ist, ist es 1, andernfalls ist es 0
//Wenn alle Bits 1 sind, hat dies keine Auswirkungen auf andere Bits. Jetzt ist es der Fall, wenn alle Bits 1 sind 0, es hat keinen Einfluss auf andere Bits :)
// Wir müssen also nur den entsprechenden Wert des Binärbits des nachfolgenden Operanden auf 1 setzen, und alle anderen Bits auf 0 sind in Ordnung.
//Hast du es gefunden? Es ist zufällig der Dezimalwert, der jedem unserer Einstellungselemente entspricht:


Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung der PHP-Median-Operation. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn