Stručný přehled bitových operátorů
Operátor je symbol, který dává kompilátoru pokyn k provádění určitých matematických nebo logických operací. V C ++ existuje několik typů operátorů, například:
- Aritmetické operátory
- Logičtí operátoři
- Relační operátoři
- Operátoři přiřazení
- Bitové operátory
- Různí operátoři
Všichni bitoví operátoři pracují na úrovni jednotlivých bitů. Bitový operátor lze použít pouze na celočíselné a znakové datové typy. Například pokud máte proměnnou celočíselného typu o velikosti 32 bitů a použijete bitovou operaci NOT, použije se bitový operátor NOT pro všech 32 bitů. Takže nakonec bude všech 32 bitů v proměnné obráceno.
V C ++ je k dispozici šest různých bitových operátorů:
- Bitové operátor OR [vyjádřeno jako „|“]
- Bitové AND [reprezentováno jako „&“]
- Bitový NOT [reprezentován jako „~“]
- Bitový XOR [reprezentován jako „^“]
- Bitový posun vlevo [reprezentován jako „<<”]
- Bitový posun doprava [vyjádřeno jako „>>“]
Tabulka bitových NEBO pravdy
Operátor Bitwise OR vytvoří 1, když je alespoň jeden operand nastaven na 1. Tady je tabulka pravdivosti pro operátor Bitwise OR:
Bit-1 | Bit-2 | Bit-1 | Bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Tabulka bitových AND pravd
Bitový operátor AND vytvoří 1, když jsou oba operandy nastaveny na 1. Tady je tabulka pravdivosti pro bitový operátor AND:
Bit-1 | Bit-2 | Bit-1 a Bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Bitwise NOT Truth Table
Bitový operátor NOT invertuje operand. Tady je tabulka pravdy pro operátor Bitwise NOT:
Bit-1 | ~ Bit-1 |
---|---|
0 | 1 |
1 | 0 |
Bitová tabulka pravdy XOR
Bitový operátor XOR vyprodukuje 1 právě tehdy, když je jeden z operandů nastaven na 1. Zde je tabulka pravdivosti pro bitový operátor AND:
Bit-1 | Bit-2 | Bit-1 ^ Bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Operátor bitového levého posunu
Operátor bitového posunu doleva posune všechny bity, které zbývají o zadaný počet zadaných bitů. Pokud ponecháte posunutí všech bitů dat o 1, původní data se vynásobí 2. Podobně pokud ponecháte posunutí všech bitů dat o 2, původní data se vynásobí 4.
Operátor bitového posunu doprava
Operátor bitového posunu doprava posune všechny bity doprava o zadaný počet zadaných bitů. Pokud posunete doprava všechny bity dat o 1, původní data se vydělí (celočíselné dělení) 2. Podobně, pokud posunete všechny bity dat doprava o 2, původní data se vydělí (celočíselné dělení) 4.
Příklady
Nyní, protože jsme pochopili základní koncept bitových operací, pojďme se podívat na několik příkladů, které vám pomohou porozumět bitovým operacím v C ++:
- Příklad 1: Bitový operátor OR
- Příklad 2: Bitový operátor AND
- Příklad 3: Bitový operátor NOT
- Příklad 4: Bitový operátor XOR
- Příklad 5: Operátor bitového levého posunu
- Příklad 6: Operátor bitového posunu doprava
- Příklad 7: Nastavit bit
- Příklad 8: Vymazat bit
Příklad 7 a 8 slouží k demonstraci skutečného použití bitových operátorů v programovacím jazyce C ++.
Příklad 1: Bitový operátor OR
V tomto ukázkovém programu si ukážeme operátor Bitwise OR.
#zahrnout#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)
bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result = 0;
// Bitové operace NEBO
result = first_num | druhé_číslo;
// vytiskne vstupní čísla
cout << endl;
display ("První číslo je =", první_číslo);
display ("Druhé číslo je =", druhé_číslo);
// vytiskne výstupní hodnotu
display ("first_num | second_num =", výsledek);
cout << endl;
návrat 0;
Příklad 2: Bitový operátor AND
V tomto ukázkovém programu ilustrujeme operátor Bitwise AND.
#zahrnout#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)
bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result = 0;
// Bitový AND provoz
result = first_num & second_num;
// vytiskne vstupní čísla
cout << endl;
display ("První číslo je =", první_číslo);
splay ("Druhé číslo je =", druhé_číslo);
// vytiskne výstupní hodnotu
display ("first_num & second_num =", výsledek);
cout << endl;
návrat 0;
Příklad 3: Bitový operátor NOT
V tomto ukázkovém programu pochopíme, jak operátor Bitwise NOT pracuje v C++.
#zahrnout#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)
bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitová operace NOT
result_1 = ~ první_číslo;
result_2 = ~ druhé_číslo;
// vytiskne vstupní čísla a výstupní hodnotu
cout << endl;
display ("První číslo je =", první_číslo);
display ("~ first_num =", result_1);
cout << endl;
// vytiskne vstupní čísla a výstupní hodnotu
display ("Druhé číslo je =", druhé_číslo);
display ("~ second_num =", result_2);
cout << endl;
návrat 0;
Příklad 4: Bitový operátor XOR
Tento program má v úmyslu vysvětlit, jak operátor Bitwise XOR pracuje v C++.
#zahrnout#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)
bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result = 0;
// Bitová operace XOR
result = first_num ^ second_num;
// vytiskne vstupní čísla
cout << endl;
display ("První číslo je =", první_číslo);
display ("Druhé číslo je =", druhé_číslo);
// vytiskne výstupní hodnotu
display ("first_num ^ second_num =", výsledek);
cout << endl;
návrat 0;
Příklad 5: Operátor bitového levého posunu
Nyní uvidíme příklad operátoru Bitový levý posun. V tomto programu jsme deklarovali dvě čísla, first_num a second_num celočíselného typu. Zde je „first_num“ posunuto doleva o jeden bit a „second_num“ je posunuto doleva o dva bity.
#zahrnout#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)
bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitový posun vlevo
result_1 = první_číslo << 1;
result_2 = druhé_číslo << 2;
// vytiskne vstupní čísla a výstupní hodnotu
cout << endl;
display ("První číslo je =", první_číslo);
display ("first_num << 1 = ", result_1);
cout << endl;
// vytiskne vstupní čísla a výstupní hodnotu
display ("Druhé číslo je =", druhé_číslo);
display ("druhé_číslo << 2 = ", result_2);
cout << endl;
návrat 0;
Příklad 6: Operátor bitového posunu doprava
Nyní uvidíme další příklad k pochopení operátoru Bitwise Right Shift. Deklarovali jsme dvě čísla, first_num a second_num celočíselného typu. Zde je „first_num“ posunuto doprava o jeden bit a „second_num“ je posunuto doprava o dva bity.
#zahrnout#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)
bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitový posun doprava
result_1 = první_číslo >> 1;
result_2 = druhé_číslo >> 2;
// vytiskne vstupní čísla a výstupní hodnotu
cout << endl;
display ("První číslo je =", první_číslo);
display ("first_num >> 1 =", result_1);
cout << endl;
// vytiskne vstupní čísla a výstupní hodnotu
display ("Druhé číslo je =", druhé_číslo);
display ("second_num >> 2 =", result_2);
cout << endl;
návrat 0;
Příklad 7: Nastavit bit
Tento příklad má v úmyslu ukázat, jak nastavit konkrétní bit pomocí bitových operátorů.
#zahrnout#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)
bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9;
// vytiskne číslo vstupu - first_num
cout << endl;
display ("První číslo je =", první_číslo);
// Nastavte 5. bit
first_num | = (1UL << 5);
// Tiskový výstup
display ("Nastavit 5. bit first_num =", first_num);
cout << endl;
// vytiskne číslo vstupu - druhé_číslo
cout << endl;
display ("Second Number is =", second_num); // Nastaví 6. bit
second_num | = (1UL << 6);
// Tiskový výstup
display ("Set 6. bit of second_num =", second_num);
cout << endl;
návrat 0;
Příklad 8: Vymazat bit
Tento příklad má v úmyslu ukázat, jak vyčistit určitý bit pomocí bitových operátorů.
#zahrnout#zahrnout
#zahrnout
pomocí jmenného prostoru std;
// funkce display ()
void display (string print_msg, int number)
bitová sada<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9;
// vytiskne číslo vstupu - first_num
cout << endl;
display ("První číslo je =", první_číslo);
// Vymazat 2. bit
first_num & = ~ (1UL << 2);
// Tiskový výstup
display ("Nastavit 2. bit first_num =", first_num);
cout << endl;
// vytiskne číslo vstupu - druhé_číslo
cout << endl;
display ("Druhé číslo je =", druhé_číslo);
// Vymazat 3. bit
second_num & = ~ (1UL << 3);
// Tiskový výstup
display ("Set 3. bit of second_num =", second_num);
cout << endl;
návrat 0;
Závěr
Bitový operátor se primárně používá k manipulaci s jednotlivými bity pro celočíselný a znakový datový typ. Bitový operátor se silně používá při vývoji vestavěného softwaru. Takže pokud vyvíjíte ovladač zařízení nebo systém velmi blízký úrovni hardwaru, možná budete chtít použít tyto bitové operátory.