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.
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). |
&
)#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
|
)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
^
)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
~
)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)
<<
)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.
>>
)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.
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
int value = 0b10100000;
value |= 0b00000100; // 10100100 lesz az új érték
value &= ~0b00000100; // 10100000 lesz ismét
value ^= 0b00000100; // 10100100 vagy 10100000 (kapcsolgatá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