bitwise AND
Főnév
bitwise AND (tsz. bitwise ANDs)
- (informatika) A bitwise AND (bitenkénti ÉS) művelet a C++ programozási nyelvben egy alapvető bináris művelet, amelyet a & operátor jelöl. Ez a művelet két szám bináris alakját hasonlítja össze, és minden bitpozícióban elvégzi az ÉS műveletet:
- Ha mindkét operandus adott bitje 1, akkor az eredményben is 1 lesz.
- Ha bármelyik operandus adott bitje 0, akkor az eredményben 0 lesz.
1. Bitwise AND működése
A bitwise AND az egyes biteket párhuzamosan dolgozza fel. Nézzünk egy példát:
#include <iostream>
int main() {
int a = 5; // 0101 binárisan
int b = 3; // 0011 binárisan
int eredmeny = a & b; // 0001 binárisan, ami decimálisan 1
std::cout << "Eredmény: " << eredmeny << std::endl; // Kiírja: Eredmény: 1
return 0;
}
Magyarázat:
0101 (5 decimálisan) & 0011 (3 decimálisan) ---- 0001 (1 decimálisan)
Csak ott marad 1, ahol mindkét szám bitje 1 volt.
2. Mire használható a bitwise AND operátor?
A bitenkénti ÉS operátor számos felhasználási területtel rendelkezik:
a) Páros vagy páratlan szám ellenőrzése
Egy szám páros-e vagy páratlan, azt a & 1 művelettel gyorsan megállapíthatjuk:
int x = 6;
if (x & 1) {
std::cout << "A szám páratlan\n";
} else {
std::cout << "A szám páros\n";
}
Itt: - 6 & 1 → 0110 & 0001 → 0000 (páros) - 7 & 1 → 0111 & 0001 → 0001 (páratlan)
b) Bitszintű maszkolás
A bitwise AND gyakran használatos bitmaszkokkal egy adott bitcsoport kiválasztására:
int flags = 0b10101100; // Binárisan: 10101100
int mask = 0b00000100; // Binárisan: 00000100
if (flags & mask) {
std::cout << "A bit be van állítva!" << std::endl;
}
Itt az & mask segítségével ellenőrizzük, hogy a 3. bit 1-e.
c) Két halmaz közös elemei (bitmezőknél)
Ha két szám bitmezőként van tárolva, akkor a bitwise AND megmutathatja a közös tulajdonságokat:
int jogosultsag1 = 0b1101; // 13 decimálisan
int jogosultsag2 = 0b1011; // 11 decimálisan
int metszet = jogosultsag1 & jogosultsag2;
std::cout << "Közös jogosultságok: " << metszet << std::endl;
Eredmény:
1101 & 1011 ---- 1001 (9 decimálisan)
A közös jogosultságok binárisan 1001.
3. Optimalizáció és teljesítmény
A bitwise AND nagyon gyors művelet, mert közvetlenül a processzor végzi egyetlen órajelciklus alatt. Gyakran alkalmazzák: - Gyors számításokra (például maradékosztás helyett) - Játékmotorokban és grafikai programozásban - Hardverközeli programozásban (pl. beágyazott rendszerek)
4. Példák speciális felhasználásokra
a) Hatvány-e a 2-nek?
Ha egy szám hatványa a kettőnek, akkor csak egyetlen 1 bitje van beállítva. Ezt így ellenőrizhetjük:
bool isPowerOfTwo(int n) {
return (n > 0) && ((n & (n - 1)) == 0);
}
Ez a trükkös megoldás minden 2 hatványánál 0-t ad vissza, mert például:
1000 (8 decimálisan) & 0111 (7 decimálisan) ---- 0000
A bitművelet tehát gyorsabb, mint egy ciklusos ellenőrzés!
5. Összegzés
- A bitwise AND (&) operátor két szám bináris megfelelőjére alkalmazza az ÉS műveletet.
- Gyakran használják maszkolásra, bitellenőrzésre, páros/páratlan számok vizsgálatára, optimalizációra és hardverközeli programozásra.
- Gyors és hatékony, mert közvetlenül a processzor bitműveleti egységében történik.
- Speciális trükkök, mint a 2 hatványának ellenőrzése, a jogosultságok összehasonlítása, és a bitmaszkolás, gyakran használtak C++ fejlesztésben.
Ha mélyebben érdekel a téma, érdemes megismerkedni más bitműveletekkel is, például a bitwise OR (|), bitwise XOR (^) és a bit shift (<<, >>) operátorokkal!
- bitwise AND - Szótár.net (en-hu)
- bitwise AND - Sztaki (en-hu)
- bitwise AND - Merriam–Webster
- bitwise AND - Cambridge
- bitwise AND - WordNet
- bitwise AND - Яндекс (en-ru)
- bitwise AND - Google (en-hu)
- bitwise AND - Wikidata
- bitwise AND - Wikipédia (angol)