Ugrás a tartalomhoz

bitor

A Wikiszótárból, a nyitott szótárból


Főnév

bitor (tsz. bitors)

  1. (informatika)

A bitoperátorok a C++ nyelvben olyan műveletek, amelyek közvetlenül a számok bináris reprezentációján dolgoznak. Ezek az operátorok lehetővé teszik számok bit szintű manipulálását, és gyakran használják őket alacsony szintű programozásban, például operációs rendszerek, hardverprogramozás, vagy teljesítményoptimalizálás során.

1. Bitoperátorok típusai C++-ban

A C++ nyelvben a következő bitoperátorokat használhatjuk:

  • AND (AND bitenként): &
  • OR (OR bitenként): |
  • XOR (Kizáró VAGY bitenként): ^
  • NOT (Negáció bitenként): ~
  • SHIFT balra (balra mozgatás): <<
  • SHIFT jobbra (jobbra mozgatás): >>

2. Bitenkénti operátorok

a) AND operátor &

Az AND operátor bitenként összehasonlítja a két operandust, és csak akkor ad vissza 1-et, ha mindkét bit 1.

Példa:
#include <iostream>
using namespace std;

int main() {
    int a = 5;  // Binárisan: 0101
    int b = 3;  // Binárisan: 0011

    int eredmeny = a & b;  // 0101 & 0011 = 0001 (1)

    cout << "A & B: " << eredmeny << endl;  // Kimenet: 1

    return 0;
}

A kimenet:

A & B: 1

b) OR operátor |

Az OR operátor bitenként összehasonlítja a két operandust, és akkor ad vissza 1-et, ha legalább az egyik bit 1.

Példa:
#include <iostream>
using namespace std;

int main() {
    int a = 5;  // Binárisan: 0101
    int b = 3;  // Binárisan: 0011

    int eredmeny = a | b;  // 0101 | 0011 = 0111 (7)

    cout << "A | B: " << eredmeny << endl;  // Kimenet: 7

    return 0;
}

A kimenet:

A | B: 7

c) XOR operátor ^

A XOR (Exclusive OR) operátor bitenként összehasonlítja a két operandust, és csak akkor ad vissza 1-et, ha a két bit különbözik (egyik 0, másik 1).

Példa:
#include <iostream>
using namespace std;

int main() {
    int a = 5;  // Binárisan: 0101
    int b = 3;  // Binárisan: 0011

    int eredmeny = a ^ b;  // 0101 ^ 0011 = 0110 (6)

    cout << "A ^ B: " << eredmeny << endl;  // Kimenet: 6

    return 0;
}

A kimenet:

A ^ B: 6

d) NOT operátor ~

A NOT operátor egy bitet invertál, azaz 0-ból 1-et, és 1-ből 0-t csinál.

Példa:
#include <iostream>
using namespace std;

int main() {
    int a = 5;  // Binárisan: 0101

    int eredmeny = ~a;  // 0101 -> 1010 (invertálás)

    cout << "~A: " << eredmeny << endl;  // Kimenet: -6 (kétkomplementes ábrázolás miatt)

    return 0;
}

A kimenet:

~A: -6

Mivel a C++ kétkomplementes ábrázolást használ, a bit szintű negáció eredménye negatív számot adhat vissza.

3. Biteltolás operátorok

a) Shift balra operátor <<

A shift balra operátor balra tolja a bitjeit. A balra tolás minden egyes lépésben megfelel a szám szorzásának 2-vel.

Példa:
#include <iostream>
using namespace std;

int main() {
    int a = 5;  // Binárisan: 0101

    int eredmeny = a << 1;  // 0101 << 1 = 1010 (10)

    cout << "A << 1: " << eredmeny << endl;  // Kimenet: 10

    return 0;
}

A kimenet:

A << 1: 10

Mivel 1 bittel balra toltuk a számot, a 5-öt megszoroztuk 2-tel (5 * 2 = 10).

b) Shift jobbra operátor >>

A shift jobbra operátor jobbra tolja a bitjeit. A jobbra tolás minden egyes lépésben megfelel a szám osztásának 2-vel.

Példa:
#include <iostream>
using namespace std;

int main() {
    int a = 5;  // Binárisan: 0101

    int eredmeny = a >> 1;  // 0101 >> 1 = 0010 (2)

    cout << "A >> 1: " << eredmeny << endl;  // Kimenet: 2

    return 0;
}

A kimenet:

A >> 1: 2

Mivel 1 bittel jobbra toltuk a számot, a 5-öt elosztottuk 2-tel (5 / 2 = 2).

4. Használati példák

A bitoperátorok gyakran alkalmazhatók alacsony szintű feladatoknál, mint például bitmaszkok, jogosultságok kezelése, színkódok manipulálása, vagy különböző optimizálások.

Példa: Bitmaszkok használata

A bitmaszkok segítségével egyszerűen kiválaszthatjuk egy szám bizonyos biteit, vagy módosíthatjuk őket.

#include <iostream>
using namespace std;

int main() {
    int adat = 5;  // Binárisan: 0101
    int maszk = 3; // Binárisan: 0011

    int eredmeny = adat & maszk;  // 0101 & 0011 = 0001 (1)

    cout << "Eredmeny: " << eredmeny << endl;  // Kimenet: 1

    return 0;
}

Ebben a példában az & operátor segítségével egy bitmaszk alkalmazásával kiválasztottuk a adat értékének csak az alábbi két bitjét.

5. Összegzés

A bitoperátorok a C++ nyelvben rendkívül hasznosak, ha közvetlenül a számok bináris reprezentációval szeretnénk dolgozni. Ezek az operátorok lehetővé teszik, hogy közvetlenül manipuláljuk a biteket, így gyors és hatékony műveleteket hajthatunk végre alacsony szintű programozás során. A leggyakoribb bitoperátorok közé tartozik az AND (&), OR (|), XOR (^), NOT (~), valamint a shift balra (<<) és shift jobbra (>>) operátorok.