XOR-operatøren i Java

1. Oversikt

I denne korte opplæringen skal vi lære om Java XOR operatør. Vi vil gå gjennom litt teori om XOR operasjoner, og så får vi se hvordan du implementerer dem i Java.

2. Den XOR Operatør

La oss begynne med en liten påminnelse om semantikken til XOR operasjon. De XOR logisk drift, eller eksklusiv eller, tar to boolske operander og returnerer true hvis og bare hvis operandene er forskjellige. Dermed returnerer den falsk hvis de to operandene har samme verdi.

XOR operatør kan brukes, for eksempel når vi må sjekke for to forhold som ikke kan være sanne samtidig.

La oss vurdere to forhold, EN og B. Så viser tabellen nedenfor mulige verdier av A XOR B:

De A XOR B drift tilsvarer (A OG! B) ELLER (! A OG B). Parenteser er inkludert for klarhet, men er valgfrie, som OG operatøren har forrang over ELLER operatør.

3. Hvordan gjøre det i Java?

La oss nå se hvordan vi kan uttrykke XOR drift i Java. Selvfølgelig har vi muligheten til å bruke && og || operatører, men dette kan være litt ordlyst, som vi skal se.

Tenk deg en Bil klasse har to boolsk attributter: diesel og Håndbok. La oss si at vi vil fortelle om bilen enten er diesel eller manuell, men ikke begge deler.

La oss sjekke dette ved hjelp av && og || operatører:

Bilbil = Car.dieselAndManualCar (); boolsk dieselXorManual = (car.isDiesel () &&! car.isManual ()) || (! car.isDiesel () && car.isManual ());

Det er litt langt, spesielt med tanke på at vi har et alternativ - Java XOR operatør, representert av ^ symbol. Det er en bitvis operatør - det vil si en operatør som sammenligner de matchende bitene av to verdier for å returnere et resultat. I XOR Hvis to biter av samme posisjon har samme verdi, vil den resulterende biten være 0. Ellers blir den 1.

Så i stedet for vårt tungvint XOR implementering, kan vi bruke direkte ^ operatør:

Bilbil = Car.dieselAndManualCar (); boolsk dieselXorManual = car.isDiesel () ^ car.isManual ();

Som vi kan wee, er ^ lar oss være mer konsise i å uttrykke XOR operasjoner.

Til slutt er det verdt å nevne at XOR som de andre bitvise operatørene, fungerer med alle primitive typer. La oss for eksempel vurdere to heltall 1 og 3, hvis binære representasjoner er henholdsvis 00000001 og 000000011. Bruk deretter XOR operatør mellom dem vil resultere i heltallet 2:

hevder at (1 ^ 3) .isEqualTo (2);

Bare den andre biten er forskjellig i de to tallene, derfor er resultatet av XOR operatør på denne biten vil være 1. Alle andre bits er identiske, og dermed deres bitvise XOR resultatet er 0, og gir oss en endelig verdi på 00000010 - den binære representasjonen av heltallet 2.

4. Konklusjon

I denne artikkelen lærte vi om Java XOR operatør. Vi så at det gir en kortfattet måte å uttrykke XOR operasjoner.

Som vanlig kan du finne den fulle koden for artikkelen på GitHub.