Az XOR operátor Java-ban

1. Áttekintés

Ebben a rövid bemutatóban megismerjük a Java-t XOR operátor. Átmegyünk egy kis elméletről XOR műveleteket, majd meglátjuk, hogyan lehet ezeket megvalósítani a Java-ban.

2. A XOR Operátor

Kezdjük egy kis emlékeztetővel a XOR művelet. A XOR logikai művelet, vagy kizárólagos vagy, két logikai operandusot vesz fel, és csak akkor ad igazat, ha az operandusok különböznek. Így hamis eredményt ad, ha a két operandus értéke azonos.

Így a XOR Az operátor például akkor használható, amikor két feltételt kell ellenőriznünk, amelyek nem lehetnek egyszerre igazak.

Tekintsünk két feltételt, A és B. Ezután a következő táblázat bemutatja a A XOR B:

A A XOR B a művelet egyenértékű (A ÉS! B) VAGY (! A ÉS B). A zárójeleket az érthetőség kedvéért felvették, de választhatóak, mivel a ÉS üzemeltető elsőbbséget élvez a VAGY operátor.

3. Hogyan kell csinálni Java-ban?

Most nézzük meg, hogyan fejezzük ki a XOR művelet Java-ban. Természetesen lehetőségünk van a && és || operátorok, de ez kissé szókimondó lehet, amint látni fogjuk.

Képzelje el a Autó osztályban kettő logikai attribútumok: dízel és kézikönyv. És most tegyük fel, hogy meg akarjuk mondani, hogy az autó dízel vagy kézi, de nem mindkettő.

Ellenőrizzük ezt a && és || üzemeltetők:

Autós autó = Car.dieselAndManualCar (); logikai dízelXorManual = (car.isDiesel () &&! car.isManual ()) || (! car.isDiesel () && car.isManual ());

Ez egy kicsit hosszú, főleg ha figyelembe vesszük, hogy van alternatívánk - a Java XOR üzemeltető, amelyet a ^ szimbólum. Ez egy bitenkénti operátor - vagyis olyan operátor, amely összehasonlítja két érték egyező bitjeit az eredmény visszaadása érdekében. Ban,-ben XOR esetben, ha két, ugyanabban a helyzetben lévő bitnek ugyanaz az értéke, az eredményül kapott bit 0 lesz. Ellenkező esetben 1 lesz.

Szóval, a mi nehézkes helyett XOR megvalósítását, közvetlenül használhatjuk a ^ operátor:

Autós autó = Car.dieselAndManualCar (); logikai dízelXorManual = autó.isDiesel () ^ autó.isManual ();

Ahogy tudjuk gyengíteni, a ^ operátor lehetővé teszi számunkra, hogy tömörebbek legyünk a kifejezésben XOR tevékenységek.

Végül érdemes megemlíteni, hogy a XOR operátor, mint a többi bitenkénti operátor, minden primitív típussal működik. Vegyünk például két egész számot: 1 és 3, amelyek bináris reprezentációi: 00000001 és 000000011. Ezután a XOR operátor közöttük a 2 egész szám lesz:

assertThat (1 ^ 3) .isEqualTo (2);

Csak a második bit különbözik abban a két számban, ezért a XOR operátor ezen a biten 1 lesz. Az összes többi bit azonos, tehát bitenként XOR Az eredmény 0, így a 00000010 végső értéket kapjuk - a 2 egész szám bináris ábrázolását.

4. Következtetés

Ebben a cikkben megismerhettük a Java-t XOR operátor. Láttuk, hogy ez egy tömör kifejezési módot kínál XOR tevékenységek.

Szokás szerint a cikk teljes kódja megtalálható a GitHubon.