Porovnávacia tabuľka
Základ pre porovnanie | & | && |
---|---|---|
operátor | Je to "bitový operátor". | Je to "logický operátor". |
ohodnotenie | Hodnotí ľavú aj pravú stranu výrazu. | Hodnotí len ľavú stranu výrazu. |
Operuje sa | Pracuje na "booleovskom dátovom type", ako aj na "bitoch". | Operuje iba na "booleovskom dátovom type". |
použitie | Používa sa na kontrolu logického stavu a tiež sa používa na maskovanie určitých bitov, ako sú paritné bity. | Používa sa len na kontrolu logického stavu. |
Definícia & (Bitové AND)
Tento operátor '&' sa používa ako logický (&) operátor a bitový operátor. Pracuje na booleovských aj binárnych údajoch. Keď & operátor je použitý ako logický & operátor, potom výsledok je "true", ak obidve strany výrazu hodnotenia sú pravdivé, inak to vráti "falošné". Umožňuje kompilátorovi vyhodnotiť obidve strany výrazu. To znamená, že aj keď ľavá strana výrazu je falošná, vyhodnocuje pravú stranu výrazu.
Umožňujeme nám to pochopiť pomocou príkladu.
int a = 4, b = 5; system.out.println ((a == 6) & (b ++ == 6)); system.out.println ("b =" + b); // výstup falošný b = 5
Tu, pri vyhodnocovaní ľavej strany výrazu (a == 6), výsledkom je falošný, operátor & potom vyhodnotí pravú stranu výrazu (b ++ == 6) ako výsledok, hodnotu b prírastkov.
Keď '&' používa ako "bitový operátor", najprv konvertuje oba operandy na binárnu formu a potom na ňu pracuje pomocou operátora & bit-by-bit. Po operácii je získaný výsledok v binárnej forme, ktorá sa potom prevedie na desatinnú. Každý bit, ktorý je 0 v jednom z operandov, má hodnotu 0. Ak sú oba bity operandov 1, výsledný bit je 1. Bitový operátor sa riadi rovnakou tabuľkou pravdy ako jeho logický a operátor.
Pozrite sa na bitovú operáciu operátora.
int a; a = 3 a 4; // 011 & 100 = 000 system.out.println ("a =" + a); // výstup a = 0
Tu sa desiatková hodnota 3 a 4 spočiatku prevádza na ich binárnu formu a potom & bitový operátor vykoná operáciu na nich bitom za bit. Získaný výsledok je v binárnej forme, ktorý sa opäť prevedie na desatinnú podobu.
Definícia & & (Skrat na AND)
Tento operátor && funguje úplne ako logický operátor. Pracuje iba na booleovskom dátovom type. Tiež sa nazýva operátor skratu. Ako kontroluje len ľavú stranu výrazu. Ak je ľavá strana výrazu výsledkom falošného, potom sa neobťažuje na vyhodnotenie pravostrannej strany výrazu.
Umožňuje nám pochopiť fungovanie && operátora s príkladom.
int a = 4, b = 5; system.out.println ((a == 6) && (b ++ == 6)); system.out.println ("b =" + b); // výstup nepravdivý b = 4
Keď je stav (a == 6) nepravdivý, operátor && nehodnotí výraz (b ++ == 6), výsledkom je, že hodnota b sa nezvyšuje.
Kľúčové rozdiely medzi & a &&
- Operátor & operátor je logický aj bitový operátor, pretože pracuje na oboch booleanoch ako aj na binárnych dátach, pričom operátor && je iba logickým operátorom, pretože pracuje iba na booleovskom dátovom type.
- Operátor & vyhodnotí obe strany výrazu, aby získal konečný výsledok, zatiaľ čo operátor && vyhodnotí len ľavú stranu výrazu a ak sa ukáže ako falošný, ani nehodnotí pravú stranu výrazu.
Poznámka:
Pri vyhodnocovaní booleovského dátového typu obaja operátori vychádzajú z "true" iba vtedy, ak sú oba operandy pravdivé, inak sa vráti "false".
záver:
Operátor & & &&, obidva sa používajú na vyhodnotenie booleovskej podmienky, zatiaľ čo operátor & je tiež použitý pre bitovú operáciu. Keď potrebujeme zhodnotiť obidve strany výrazu, ktorý sa používa iným operátorom, môžeme použiť && operátor.