bitwise operator
Főnév
bitwise operator (tsz. bitwise operators)
A bitműveletek (bitwise operators) a C++ nyelvben az egyes biteken végzett műveletek végrehajtására szolgálnak. Ezek a műveletek nagyon hasznosak, ha alacsony szintű programozást végzünk, például hardvervezérlés, kriptográfia, adatkompresszió vagy optimalizáció esetén.
Bitműveletek típusai C++-ban
A C++ következő bitműveleteket támogatja:
| Operátor | Neve | Leírás |
|---|---|---|
& |
Bitenkénti ÉS (AND) | Mindkét bit 1 kell legyen ahhoz, hogy az eredmény 1 legyen. |
| |
Bitenkénti VAGY (OR) | Ha legalább az egyik bit 1, az eredmény 1 lesz. |
^ |
Bitenkénti KIZÁRÓ VAGY (XOR) | Ha a bitek eltérőek, az eredmény 1, ha azonosak, az eredmény 0. |
~ |
Bitenkénti negálás (NOT) | Minden bitet az ellentettjére változtat (1 → 0, 0 → 1). |
<< |
Bitenkénti balra tolás (Left Shift) | A biteket balra tolja, az alacsonyabb helyiértéken 0-t helyez be. |
>> |
Bitenkénti jobbra tolás (Right Shift) | A biteket jobbra tolja, a magasabb helyiértéken 0 vagy az előjel bitet helyez be (függően a típustól). |
Bitműveletek példákkal
1. Bitenkénti ÉS (&)
#include <iostream>
using namespace std;
int main() {
int a = 5; // 0101 binárisan
int b = 3; // 0011 binárisan
int c = a & b; // 0001 binárisan (1 decimálisan)
cout << "a & b = " << c << endl;
return 0;
}
Magyarázat:
- 5 binárisan: 0101 - 3 binárisan: 0011 - 0101 & 0011 = 0001 → eredmény: 1
2. Bitenkénti VAGY (|)
int c = a | b; // 0111 binárisan (7 decimálisan)
Magyarázat:
- 5 binárisan: 0101 - 3 binárisan: 0011 - 0101 | 0011 = 0111 → eredmény: 7
3. Bitenkénti KIZÁRÓ VAGY (^)
int c = a ^ b; // 0110 binárisan (6 decimálisan)
Magyarázat:
- 5 binárisan: 0101 - 3 binárisan: 0011 - 0101 ^ 0011 = 0110 → eredmény: 6
4. Bitenkénti negálás (~)
int c = ~a; // Negálás, függ a bitmérettől
Magyarázat:
- 5 binárisan: 0000 0101 - ~5 binárisan: 1111 1010 (komplementer alak, előjeles számoknál -6 lesz)
5. Balra tolás (<<)
int c = a << 1; // 1010 binárisan (10 decimálisan)
Magyarázat:
- 5 binárisan: 0101 - 5 << 1 → 1010 (10 decimálisan)
- Minden bit balra mozdul, a jobb oldali helyek nullával töltődnek fel.
6. Jobbra tolás (>>)
int c = a >> 1; // 0010 binárisan (2 decimálisan)
Magyarázat:
- 5 binárisan: 0101 - 5 >> 1 → 0010 (2 decimálisan)
- Minden bit jobbra mozdul, a bal oldali helyek nullával töltődnek fel.
Bitműveletek alkalmazása
1. Bitmaszkolás
Adott bitek ellenőrzése vagy manipulálása.
int value = 0b10101100; // 172 decimálisan
int mask = 0b00000100; // 4 decimálisan
bool bitSet = (value & mask) != 0; // Megnézzük, hogy a 3. bit be van-e állítva
2. Bit beállítása
int value = 0b10100000;
value |= 0b00000100; // 10100100 lesz az új érték
3. Bit törlése
value &= ~0b00000100; // 10100000 lesz ismét
4. Bit invertálása
value ^= 0b00000100; // 10100100 vagy 10100000 (kapcsolgatás)
Összegzés
A bitműveletek rendkívül hatékony eszközök az alacsony szintű programozásban. Használhatók:
✔️ Hardvervezérléshez
✔️ Gyors műveletekhez (pl. szorzás, osztás 2 hatványaival)
✔️ Adatstruktúrák optimalizálásához
- bitwise operator - Szótár.net (en-hu)
- bitwise operator - Sztaki (en-hu)
- bitwise operator - Merriam–Webster
- bitwise operator - Cambridge
- bitwise operator - WordNet
- bitwise operator - Яндекс (en-ru)
- bitwise operator - Google (en-hu)
- bitwise operator - Wikidata
- bitwise operator - Wikipédia (angol)