Sammenligningstabel
Grundlag for sammenligning | & | && |
---|---|---|
Operatør | Det er en "Bitwise Operator". | Det er en "Logisk Operatør". |
Evaluering | Det evaluerer både venstre og højre side af udtrykket. | Det vurderer kun den venstre side af udtrykket. |
Opererer på | Den opererer på "Boolean datatype" såvel som opererer på "bits". | Den fungerer kun på "Boolean datatype". |
Brug | Brug til at kontrollere logisk tilstand og bruges også til at maskere visse bits, såsom paritetsbitar. | Bruges kun til at kontrollere logisk tilstand. |
Definition af & (bitwise AND)
Denne '&' operatør bruges som begge, en logisk (&) operatør og en bitwise operatør. Det fungerer både på boolsk og binær data. Når & operatør bruges som logisk & operatør, resulterer det i "sandt", hvis begge sider af ekspressionsevalueringen er sande, ellers returneres det "false". Det gør det muligt for kompilatoren at evaluere begge sider af udtrykket. Det vil sige, selv om venstre side af udtrykket resulterer i falsk, vurderer den højre side af udtrykket.
Lad os forstå dette med et eksempel.
int a = 4, b = 5; system.out.println ((a == 6) & (b + + = 6)); system.out.println ("b =" + b); // output false b = 5
Ved evaluering af venstre side af udtrykket (a == 6) resulterer det i falsk, og & operatøren vurderer herefter højre side af udtrykket (b + + = 6) som følge heraf øges værdien af b.
Når '&' bruges som en "bitwise operator" konverterer den først begge operandene til binær form og opererer derefter på den ved hjælp af & operatør, bit-by-bit. Efter operationen er resultatet opnået i binær form, som derefter omdannes til decimal. Enhver bit, der er 0 i en af operandene, resulterer i 0. Hvis begge biterne i operanderne er 1, er den resulterende bit 1. Bitwise & operator styres af samme sandhedstabel som ved dens logiske og operatør.
Lad os se bitwise drift af & operatør.
int a; a = 3 & 4; // 011 & 100 = 000 system.out.println ("a =" + a); // output a = 0
Her konverteres decimalværdien 3 og 4 oprindeligt til deres binære form, og derefter udfører & bitwise operatøren & operationen på dem bit-by-bit. Resultatet opnås i binær form, som derefter omdannes til decimalform igen.
Definition af && (kortslutning og)
Denne && operatør arbejder helt som en logisk operatør. Den fungerer kun på den boolske datatype. Det kaldes også kortslutningsoperatør. Da det kun kontrollerer venstre side af udtrykket. Hvis venstre side af udtrykket resulterer i falsk, så bekymrer det sig ikke om at evaluere højre side af udtrykket.
Lad os forstå arbejdet hos && operatøren med et eksempel.
int a = 4, b = 5; system.out.println ((a == 6) && (b + + = 6)); system.out.println ("b =" + b); // output false b = 4
Her, som betingelsen (a == 6) er falsk, vurderer &&-operatøren ikke udtrykket (b + + = 6) som følge heraf øges værdien af b ikke.
Nøgleforskelle mellem & og &&
- & Operatøren er en logisk såvel som en bitvis operatør, da den fungerer både på boolsk og binær data, mens &&-operatøren kun er en logisk operatør, da den kun opererer på en boolesk datatype.
- & Operatøren vurderer begge sider af udtrykket for at opnå det endelige resultat, mens &&-operatøren kun evaluerer venstre side af udtrykket & hvis det viser sig falsk, vurderer det ikke ens ekspressions højre side.
Bemærk:
Under evalueringen af den boolske datatype er begge operatører kun "sande", hvis begge operandene er sande, ellers returnerer de "falske".
Konklusion:
Operatøren & og &&, begge bruges til at evaluere den booleanske tilstand, mens & operatøren også bruges til bitvis drift. Når vi har brug for at evaluere begge sider af udtrykket, er & operatøren brugt ellers kan vi bruge && operatøren.