Die zugrunde liegende Implementierung häufig verwendeter logischer Operatoren &&, || in Java

        In der Arbeit werden & und | häufig zur Durchführung logischer Operationen verwendet. Tatsächlich geht es darum, nach mehreren booleschen booleschen Ergebnissen ein boolesches Ergebnis zu erhalten, das den Geschäftsanforderungen entspricht.

        Zum Beispiel:

boolean codeResult = checkCode("0717");  //返回true或者false
boolean passwordResult = checkCode("jkwang147.."); //返回true或者false

//业务要求需要两者都正确才允许登录
if(codeResult && passwordResult ){
    //两者都为true
    loginSuccess();
}


//此时产品经理说需求有改动,只要验证码(codeResult)和密码任意一个校验成功即可登录
if(codeResult || passwordResult ){
    //一者为true即可进入
    loginSuccess();
}

        Ja, diese Art des Urteils kann man überall in der Branche beobachten. Aber wie wird es erreicht?

        Dies muss die binären Operatoren am unteren Rand des Computers erwähnen.

binäre Operation

        Lassen Sie uns zunächst etwas über den zweiten Mechanismus und seine Operatoren lernen. Die unterste Ebene des Computers besteht tatsächlich aus 0 und 1. Unsere Binärdatei besteht aus Daten, die mit 0 oder 1 gespeichert sind.

        Wir haben jetzt beispielsweise einen Werttyp 17, den wir im Computer speichern möchten. 

17:

0001 0001

1:

0000 0001

5:

0000 0101

        Es wird in dieser Form im Speicher abgelegt. Jede Zahl ist 1 Bit.

        1 Bit = 1 Bit 1 Byte = 8 Bit Ein Byte kann also nur -128 ~ 127 speichern

  

 Aus diesem Grund melden wir einen Fehler, wenn die Daten vom Typ int bis zu einer bestimmten Größe gespeichert werden. Weil der Typ int nur 4 Bytes hat.

OK, das kommt ein bisschen weit. Zurück zu unseren üblichen bitweisen Operatoren.

Gängige Operatoren sind ! , &, |      diese drei Arten von nicht, und, oder

Sehr häufig sind ^ , >> , >>> usw.

bitweise Operation

Was sind bitweise Operationen? Tatsächlich ist es sehr leicht zu verstehen. Tatsächlich besteht es darin, die Binärdaten zweier Werte herauszunehmen und jedes Bit auf jedem Bit zu verarbeiten.

1. ^ XOR-Operation

        1, wenn die Bits unterschiedlich sind, und 0, wenn sie gleich sind. Es wird schwieriger sein, sich auf diese Weise zu erinnern. Wir stellen uns ^ als die Augen eines Smileys vor. 1 ist männlich, 0 ist weiblich. Wann wirst du lachen? Das bedeutet, dass Jungen lachen, wenn sie Mädchen sehen. Wenn das Paar also ein Mann und eine Frau ist, ist er glücklich und es ist 1. Wenn die Übereinstimmung das gleiche Geschlecht hat, ist der Wert 0; führen wir die folgenden Berechnungen durch.

Berechnung: 2^5

2 im Binärformat: 0010

Binär von 5: 0101

Berechnungsergebnis: 0111 Wiederhergestelltes Binärergebnis ist: 7

2. | ODER-Verknüpfung

        | 1, wenn beide 0 sind, und 0, wenn beide 0 sind. Sie können auch | as verwenden, um nach Jungen zu suchen. Wenn ein Junge im Gebiss ist, ist es 1

Berechnungen: 2 | 5 

2 im Binärformat: 0010

Binär von 5: 0101

Berechnungsergebnis: 0111 Wiederhergestelltes Binärergebnis ist: 7   

        Gleiches Ergebnis wie XOR, aber rein zufällig hängen die beiden Operationen nicht zusammen.

3. & und Betrieb 

        & Nur wenn beide Bits 1 sind, ist es 1, andernfalls ist alles 0. &Sie können sehen, dass es sehr verzerrt ist, Sie können es als deformierte Liebe sehen. Nur Nannan ist 1.

Berechnungen: 2 & 5 

2 im Binärformat: 0010

Binär von 5: 0101

Berechnungsergebnis: 0000 Binäres Ergebnis wiederherstellen auf: 0

4.! nicht betrieb

       Dieser Operator ist nicht der Operator zweier Binärdateien. Es negiert normalerweise eine Binärdatei. Beispiel: 0000 wird zu 1111.

1 ist 0, 0 ist 1 

Logische Java-Operatoren & und | 

        Lassen Sie uns vorher über den booleschen Typ sprechen. Weil unsere logischen Operatoren und oder normalerweise mit booleschen Werttypen verwendet werden. Und die unterste Ebene unseres booleschen Werts besteht tatsächlich aus zwei Werten. 0 und 1 

        0 ist falsch

        1 ist wahr

Das übliche if(boolean a & boolean b) if(boolean a | boolean b) in unserem Code ist also tatsächlich die bitweise Operation von 0 und 1 unten 

boolean t = true;
boolean f = false;

if(t & f){
    实则是:0001
            &
           0000
---------------------
       结果:0000
    返回的是0 所以是flase
}



if(t | f){
    实则是:0001
            |
           0000
---------------------
       结果:0001
    返回的是1 所以是true
}

Warum wird es dann in Java zu && und ||? Ein einzelnes ist ein bitweises Urteil. Das Doppelte ist ein logisches Urteil.

Java für Effizienz. Sie müssen keine unnötigen Vorgänge ausführen. Es kapselt also das logische UND && oder ||.

Zum Beispiel && logisches UND hier. Wir wissen, dass es wahr ist, zu beurteilen, dass beides wahr ist. Aber mein boolescher Wert ist flase, also besteht keine Notwendigkeit. Gehen Sie und rechnen Sie mit dem zweiten booleschen Wert.

|| : logisch oder auch. Wenn unser erster boolescher Wert wahr ist. Es spielt keine Rolle, ob der zweite boolesche Wert wahr ist oder nicht. Wie auch immer, es gibt true zurück.

 

Je suppose que tu aimes

Origine blog.csdn.net/m0_58907154/article/details/130559256
conseillé
Classement