Bitenkénti és vs logikai és operátorok

1. Bemutatkozás

A Java-ban kétféleképpen lehet „ÉS” -et mondani. De melyiket kell használni?

Ebben az oktatóanyagban megvizsgáljuk a & és && közötti különbségeket. Ezenkívül megismerkedünk a bitenkénti műveletekkel és a rövidzárlatokkal.

2. A Bitwise használata ÉS

A bitenkénti AND (&) operátor összehasonlítja két egész szám bináris számjegyét, és 1-et ad vissza, ha mindkettő 1, ellenkező esetben 0-t ad vissza.

Vessünk egy pillantást két egész számra:

int hat = 6; int öt = 5;

Ezután alkalmazzunk bitenként AND operátort ezekre a számokra:

int resultShouldBeFour = hat & öt; assertEquals (4, resultShouldBeFour);

A művelet megértéséhez nézzük meg az egyes számok bináris ábrázolását:

4: 0100 tizedes binárisa: 5: 0101 tizedes bináris: 6: 0110 tizedes bináris

Az & operátor minden bitnél logikai AND-t hajt végre, és új bináris számot ad vissza:

0110 0101 ----- 0100

Végül az eredményünk - 0100 – visszaállítható decimális számra - 4.

Lássuk a teszt Java kódot:

int hat = 6; int öt = 5; int resultShouldBeFour = hat & öt; assertEquals (4, resultShouldBeFour);

2.1. A & Booleans használatával

Használhatjuk a bitenkénti AND (&) üzemeltető logikai operandusok. Visszatér igaz csak ha mindkét operandus igaz, különben visszatér hamis.

Vegyünk hármat logikai változók:

logikai trueBool = igaz; logikai másTrueBool = true; logikai hamisBool = hamis;

Ezután alkalmazzunk bitenként ÉS operátort a változókra trueBool és anotherTrueBool:

logikai trueANDtrue = trueBool és egy másikTrueBool;

Akkor az eredmény meglesz igaz.

Ezután alkalmazzuk a bitenkénti ÉS operátort trueBool és falseBool:

logikai trueANDFalse = trueBool & falseBool;

Ebben az esetben az eredmény az lesz hamis.

Lássuk a teszt Java kódot:

logikai trueBool = igaz; logikai másTrueBool = true; logikai hamisBool = hamis; logikai trueANDtrue = trueBool és egy másikTrueBool; logikai trueANDFalse = trueBool & falseBool; assertTrue (trueANDtrue); assertFalse (trueANDFalse);

3. A Logical használata ÉS

Mint &, a logikai ÉS (&&) operátor összehasonlítja két logikai változó vagy kifejezés értékét. És visszatér igaz csak ha mindkét operandus igaz, különben visszatér hamis.

Vegyünk hármat logikai változók:

logikai trueBool = igaz; logikai másTrueBool = true; logikai hamisBool = hamis;

Ezután alkalmazzunk egy logikai ÉS operátort a változókra trueBool és anotherTrueBool:

logikai trueANDtrue = trueBool && anotherTrueBool;

Akkor az eredmény meglesz igaz.

Ezután alkalmazzunk egy logikai ÉS operátort trueBool és falseBool:

logikai trueANDFalse = trueBool && falseBool;

Ebben az esetben az eredmény az lesz hamis.

Lássuk a teszt Java kódot:

logikai trueBool = igaz; logikai másTrueBool = true; logikai hamisBool = hamis; logikai másikFalseBool = hamis; logikai trueANDtrue = trueBool && anotherTrueBool; logikai trueANDFalse = trueBool && falseBool; logikai hamisANDFalse = falseBool && anotherFalseBool; assertTrue (trueANDtrue); assertFalse (trueANDFalse); assertFalse (falseANDFalse);

3.1. Rövidzárlat

Szóval, mi a különbség? Jól, a && kezelő rövidzárlat. Ez azt jelenti, hogy nem értékeli a jobb oldali operandust vagy kifejezést, amikor a bal oldali operandus vagy kifejezés az hamis.

Vegyünk két kifejezést, amelyek hamisnak minősülnek:

Első kifejezés: 2 <1 Második kifejezés: 4 <5 

Amikor logikai ÉS operátort alkalmazunk a kifejezésekre 2<1 és 4<5, akkor csak az első kifejezést értékeli 2<1 és visszatér hamis.

logikai rövidzárlat eredmény = (2 <1) && (4 <5); assertFalse (shortCircuitResult);

3.2. Az && használata egész számokkal

A & operátort logikai vagy numerikus típusokkal használhatjuk, de a && csak logikai operandusokkal használható. Egész operandusokkal történő használata fordítási hibát eredményez:

int öt = 2; int hat = 4; int eredmény = öt && hat;

4. Összehasonlítás

  1. Az & operátor mindig mindkét kifejezést, míg az && operátor csak a második kifejezést értékeli, ha az első igaz
  2. Az & összehasonlítja az egyes operandusokat bitenként, míg az && csak logikai értékeken működik

5. Következtetés

Ebben a cikkben bitenként használtuk & operátor két számjegy bitjeinek összehasonlításához új számjegyet eredményez. Ezenkívül a logikát használtuk && operátor két logikai érték összehasonlítására, logikai értéket eredményezve.

Néhány kulcsfontosságú különbséget is láttunk a két operátor között.

Mint mindig, az oktatóanyag kódját is megtalálhatja a GitHubon.