Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erklärung des Javascript-Operators „!~'_Grundkenntnisse

Detaillierte Erklärung des Javascript-Operators „!~'_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:15:011468Durchsuche

Es ist fast das chinesische Neujahrsfest und ich habe endlich frei. Wenn man jeden Tag verschiedene technische Artikel durchstöbert, ist dieser Zustand großartig.

Ich habe am Nachmittag einen Artikel über js gelesen und der folgende Absatz erregte meine Aufmerksamkeit.

Code kopieren Der Code lautet wie folgt:

(Funktion () {
var-Namen = [];
Rückgabefunktion (Name) {
          addName(name);
}
Funktion addName(name) {
Wenn (!~names.indexOf(name))//Wenn vorhanden, fügen Sie nicht
hinzu              Namen.push(name);
console.log(names);// ["linkFly"]
}
}())('linkFly');

Was bedeutet der Operator „!~“ in if (!~names.indexOf(name)) Wenn Sie es nicht verstehen, beginnen wir mit ~.

Der Test kann zeigen, dass der Ergebniswert dieses Muster aufweist – (X 1)

Nach der Suche ging bei einigen Artikeln nur ein Satz verloren: Negiere die Binärziffer

Im wahrsten Sinne des Wortes wird es hier in achtstelliger Binärform ausgedrückt: 3=00000011, dann ~3=11111100, es ist falsch, die obige Formel anzuwenden.
Die obige Erklärung ist noch zu abstrakt und nicht konkret. Tatsächlich erfordert dies die Kenntnis des Originalcodes, des Umkehrcodes und des Komplementcodes.

Originalcode
Das höchste Bit der ursprünglichen Codedarstellung ist das Vorzeichenbit. Dieses Bit ist 0 für positive Zahlen und 1 für negative Zahlen. Die restlichen Bits stellen den Absolutwert der Zahl dar.
Inverser Code
Bei einer vorzeichenbehafteten Zahl ist das Einserkomplement einer positiven Zahl dasselbe wie ihr Originalcode; das Einserkomplement einer negativen Zahl ist die bitweise Umkehrung aller Bits des Originalcodes mit Ausnahme des Vorzeichenbits. Der Komplementcode wird häufig als Zwischenform bei der Suche nach dem Komplementcode verwendet.
Komplementcode
Das Komplement einer positiven Zahl ist dasselbe wie ihr ursprünglicher Code, und das Komplement einer negativen Zahl wird durch Invertieren aller Bits ihres ursprünglichen Codes mit Ausnahme des Vorzeichenbits und Hinzufügen von 1 zum letzten Bit erhalten, das das Komplement von ist Zahl plus 1. Zahlen in Computern werden im Allgemeinen in Zweierkomplementform dargestellt. Im Komplementcode wird (-128)D anstelle von (-0)D verwendet. Beachten Sie, dass (-128)D keinen entsprechenden Originalcode und Komplementärcode hat, (-128)D = (1000.0000)B.
Komplementoperation
Die Komplementoperation berücksichtigt das Vorzeichenbit nicht, sie wird durch Invertieren jedes Bits seines Originalcodes und Addieren von 1 zum letzten Bit erhalten. Das Komplement einer Zahl ist das Komplement ihres Gegenteils.

Nehmen Sie zum Verständnis den Artikel des Autors als Beispiel

~ bedeutet bitweise Negation. Negation bedeutet, dass, wenn es 00111 ist, es zu 11000 wird (bitweise Negation)

Die binäre Darstellung von 57 ist (1 Byte): 00111001
Die binäre Darstellung nach bitweiser Negation (~57): 11000110 Dies wird in Dezimalzahl ausgedrückt: -70
Dies ist eine negative Zahl, also eine vorzeichenbehaftete Zahl. Negative Zahlen werden in Computern durch ihr Komplement dargestellt: Nach dem Vorzeichenbit wird die bitweise Invertierung hinzugefügt und 1 hinzugefügt Nachdem das Vorzeichenbit von -70 (11000110) bitweise invertiert wurde, ist es daher (10111001) und das Addieren von 1 ist (10111010)
In Dezimalzahl umrechnen: -58
Daher ~57=-58

Jetzt verstehe ich es endlich. Obwohl die zusammengefasste Formel schnell zu Ergebnissen führen kann, kann sie nicht erklären, warum. Als Techniker vertiefen wir uns gerne in die Details.

Seufzzeit:

Das Fundament ist der Eckpfeiler von allem, was oben steht. Wenn Sie sich der Kultivierung des Tao widmen, wird der Weg lang sein.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, Sie können etwas daraus gewinnen.

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