bitwise XOR

Üdvözlöm, Ön a bitwise XOR szó jelentését keresi. A DICTIOUS-ban nem csak a bitwise XOR szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a bitwise XOR szót egyes és többes számban mondani. Minden, amit a bitwise XOR szóról tudni kell, itt található. A bitwise XOR szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Abitwise XOR és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

bitwise XOR (tsz. bitwise XORs)

  1. (informatika) A bitwise XOR (^) egy bitenkénti kizáró VAGY (exclusive OR, XOR) művelet, amely az alábbi szabály szerint működik:
  • Ha a két bit különbözik, az eredmény 1
  • Ha a két bit azonos, az eredmény 0

Ez az operátor különösen hasznos titkosításnál, bitmaskok kezelésénél, és két szám gyors cseréjénél.



Bitwise XOR működése

Példa két bináris szám XOR műveletére:

  0101  (5 decimálisan)
^ 0011  (3 decimálisan)
------------
  0110  (6 decimálisan)

🔹 Ahol a két bit különbözik (0 és 1 vagy 1 és 0), ott az eredmény 1.
🔹 Ahol a két bit megegyezik (0 és 0 vagy 1 és 1), ott az eredmény 0.



Példa bitwise XOR-ra C++-ban

#include <iostream>

int main() {
    int a = 5;  // 0101 binárisan
    int b = 3;  // 0011 binárisan
    int c = a ^ b; // XOR művelet

    std::cout << c << std::endl; // Kiírja: 6
    return 0;
}

Eredmény:

  0101  (5)
^ 0011  (3)
------------
  0110  (6)

Hol használjuk a bitwise XOR-t?

1️⃣ Két szám gyors cseréje változó használata nélkül

A XOR operátor segítségével két számot extra változó nélkül cserélhetünk fel:

#include <iostream>

int main() {
    int a = 5, b = 3;
    
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;

    std::cout << "a: " << a << ", b: " << b << std::endl;
    return 0;
}

Hogyan működik?

1. a = a ^ b  → a = 5 ^ 3  → a = 6
2. b = a ^ b  → b = 6 ^ 3  → b = 5
3. a = a ^ b  → a = 6 ^ 5  → a = 3

Ez egy memóriahatékony trükk, mivel nem használ extra változót!



2️⃣ Egyedi elem keresése egy tömbben

Ha egy tömbben minden szám párban szerepel, kivéve egyet, akkor az egyedi szám megtalálható XOR segítségével:

#include <iostream>

int findUnique(int arr, int size) {
    int unique = 0;
    for (int i = 0; i < size; i++) {
        unique ^= arr; // Minden számot XOR-olunk
    }
    return unique;
}

int main() {
    int arr = {1, 2, 3, 2, 1};
    int size = sizeof(arr) / sizeof(arr);

    std::cout << "Egyedi szám: " << findUnique(arr, size) << std::endl;
    return 0;
}

Hogyan működik?
- Az XOR törli az ismétlődő értékeket, mert x ^ x = 0.
- Így csak az egyedi szám marad meg.



3️⃣ Bitmask és jogosultságok kezelése

XOR segítségével egy adott bit állapotát invertálhatjuk:

int flags = 0b1010;   // Kezdeti állapot: 1010
flags ^= 0b0100;      // Megváltoztatjuk a 3. bitet

std::cout << std::bitset<4>(flags) << std::endl; // Kiírja: 1110

🔹 Ha egy bit 1 volt, 0 lesz.
🔹 Ha egy bit 0 volt, 1 lesz.



Összegzés

  • A bitwise XOR (^) azokat a biteket állítja 1-re, ahol a két szám különbözik.

  • Hasznos változók cseréjére, egyedi értékek keresésére, titkosításra és bitmaskok kezelésére.

  • Matematikailag igaz, hogy:

    x ^ x = 0   // Ha ugyanazt az értéket XOR-oljuk önmagával, mindig 0-t kapunk
    x ^ 0 = x   // XOR 0-val nem változtat semmit

A XOR egy erőteljes bitművelet, amely sok optimalizált algoritmus alapja!