Bitwise & vs Logical && Operators

1. Introduksjon

I Java har vi to måter å si "AND" på. Men hva skal jeg bruke?

I denne opplæringen vil vi se på forskjellene mellom & og &&. Og vi vil lære om bitvis drift og kortslutning underveis.

2. Bruk av Bitwise OG

Den bitvise AND (&) -operatøren sammenligner hvert binære siffer med to heltall og returnerer 1 hvis begge er 1, ellers returnerer den 0.

La oss ta en titt på to heltall:

int seks = 6; int fem = 5;

Deretter la oss bruke en bitvis OG-operator på disse tallene:

int resultShouldBeFour = seks & fem; assertEquals (4, resultShouldBeFour);

For å forstå denne operasjonen, la oss se på den binære representasjonen av hvert tall:

Binær med desimal 4: 0100 Binær med desimal 5: 0101 Binær med desimal 6: 0110

Operatoren & utfører en logisk OG på hver bit, og returnerer et nytt binært tall:

0110 0101 ----- 0100

Endelig, vårt resultat - 0100 – kan konverteres tilbake til desimaltall - 4.

La oss se testen Java-kode:

int seks = 6; int fem = 5; int resultShouldBeFour = seks & fem; assertEquals (4, resultShouldBeFour);

2.1. Bruk av & med boolere

Vi kan også bruke bitvis AND (&) operatør med boolsk operander. Det kommer tilbake ekte bare hvis begge operandene er det ekte, ellers kommer den tilbake falsk.

La oss ta tre boolsk variabler:

boolsk trueBool = true; boolsk anotherTrueBool = true; boolsk falseBool = false;

La oss deretter bruke en bitvis OG-operator på variabler trueBool og anotherTrueBool:

boolsk trueANDtrue = trueBool & anotherTrueBool;

Så blir resultatet ekte.

Deretter la oss bruke en bitvis OG operatør på trueBool og falseBool:

boolsk trueANDFalse = trueBool & falseBool;

I dette tilfellet blir resultatet falsk.

La oss se testen Java-kode:

boolsk trueBool = true; boolsk anotherTrueBool = true; boolsk falseBool = false; boolsk trueANDtrue = trueBool & anotherTrueBool; boolsk trueANDFalse = trueBool & falseBool; assertTrue (trueANDtrue); assertFalse (trueANDFalse);

3. Bruk av Logical OG

Som &, den logiske AND (&&) operator sammenligner verdien av to boolske variabler eller uttrykk. Og den kommer også tilbake ekte bare hvis begge operandene er det ekte, ellers kommer den tilbake falsk.

La oss ta tre boolsk variabler:

boolsk trueBool = true; boolsk anotherTrueBool = true; boolsk falseBool = false;

La oss deretter bruke en logisk AND-operator på variabler trueBool og anotherTrueBool:

boolsk trueANDtrue = trueBool && anotherTrueBool;

Så blir resultatet ekte.

La oss deretter bruke en logisk AND-operator på trueBool og falseBool:

boolsk trueANDFalse = trueBool && falseBool;

I dette tilfellet blir resultatet falsk.

La oss se testen Java-kode:

boolsk trueBool = true; boolsk anotherTrueBool = true; boolsk falseBool = false; boolsk anotherFalseBool = false; boolsk trueANDtrue = trueBool && anotherTrueBool; boolsk trueANDFalse = trueBool && falseBool; boolsk falseANDFalse = falseBool && anotherFalseBool; assertTrue (trueANDtrue); assertFalse (trueANDFalse); assertFalse (falseANDFalse);

3.1. Kortslutning

Så, hva er forskjellen? Vi vil, de && kortslutning til operatøren. Dette betyr at den ikke evaluerer operand eller uttrykk på høyre side når operand eller uttrykk på venstre side er falsk.

La oss ta to uttrykk som vurderes som falske:

Første uttrykk: 2 <1 Andre uttrykk: 4 <5 

Når vi bruker en logisk AND-operatør på uttrykk 2<1 og 4<5, da evaluerer den bare det første uttrykket 2<1 og kommer tilbake falsk.

boolsk shortCircuitResult = (2 <1) && (4 <5); assertFalse (shortCircuitResult);

3.2. Bruk av && med heltal

Vi kan bruke & operatoren med boolske eller numeriske typer, men && kan bare brukes med boolske operander. Å bruke den med heltalloperander resulterer i en kompileringsfeil:

int fem = 2; int seks = 4; int resultat = fem && seks;

4. Sammenligning

  1. & Operatoren evaluerer alltid begge uttrykkene, mens && operatoren evaluerer det andre uttrykket bare hvis det første er ekte
  2. & sammenligner hver operand bitvis, mens && kun opererer på booleanere

5. Konklusjon

I denne artikkelen brukte vi bitvis & operatøren for å sammenligne bits med to sifre, noe som resulterer i et nytt siffer. Vi brukte også det logiske && operatøren for å sammenligne to booleanere, noe som resulterer i en boolsk verdi.

Vi så også noen viktige forskjeller mellom de to operatørene.

Som alltid kan du finne koden for denne opplæringen på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found