Stručný prehľad bitových operátorov
Operátor je symbol, ktorý dáva kompilátoru pokyn, aby vykonal určité matematické alebo logické operácie. V C ++ existuje niekoľko typov operátorov, napríklad:
- Aritmetické operátory
- Logickí operátori
- Relační operátori
- Prevádzkovatelia pridelenia
- Bitoví operátori
- Rôzni operátori
Všetci bitoví operátori pracujú na individuálnej bitovej úrovni. Bitový operátor je možné použiť iba na celočíselné a znakové dátové typy. Napríklad ak máte premennú typu celého čísla s veľkosťou 32 bitov a použijete bitovú operáciu NOT, použije sa bitový operátor NOT na všetkých 32 bitov. Takže nakoniec bude obrátených všetkých 32 bitov v premennej.
V C ++ je k dispozícii šesť rôznych bitových operátorov:
- Bitové ALEBO [reprezentované ako „|“]
- Bitové AND [reprezentované ako „&“]
- Bitový NIE [predstavovaný ako „~“]
- Bitový XOR [reprezentovaný ako „^“]
- Bitový posun vľavo [reprezentovaný ako „<<”]
- Bitový pravý posun [reprezentovaný ako „>>“]
Tabuľka bitových ALEBO Pravdy
Operátor Bitwise OR vyprodukuje 1, keď je aspoň jeden operand nastavený na 1. Tu je tabuľka pravdy pre operátor Bitwise OR:
Bit-1 | Bit-2 | Bit-1 | Bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Tabuľka bitových operácií AND
Bitový operátor AND vytvorí 1, keď sú oba operandy nastavené na 1. Tu je tabuľka pravdy pre operátor Bitwise AND:
Bit-1 | Bit-2 | Bit-1 a bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Bitová tabuľka NIE Pravdy
Bitový operátor NOT invertuje operand. Tu je tabuľka pravdy pre operátora Bitwise NOT:
Bit-1 | ~ Bit-1 |
---|---|
0 | 1 |
1 | 0 |
Bitová tabuľka pravdy XOR
Bitový operátor XOR vyprodukuje 1, len ak je jeden z operandov nastavený na 1. Tu je tabuľka pravdy pre operátor Bitwise 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 ľavého posuvu
Operátor Bitový posun vľavo posunie všetky bity, ktoré zostali o zadaný počet zadaných bitov. Ak necháte posunúť všetky bity údajov o 1, pôvodné údaje sa vynásobia 2. Podobne, ak necháte posunúť všetky bity údajov o 2, pôvodné údaje sa vynásobia 4.
Operátor bitového posunu doprava
Operátor bitového posunu doprava posúva všetky bity doprava o zadaný počet zadaných bitov. Ak posuniete doprava všetky bity údajov o 1, pôvodné údaje sa rozdelia (celočíselné delenie) o 2. Podobne, ak posuniete všetky bity údajov doprava o 2, pôvodné údaje sa rozdelia (celočíselné delenie) o 4.
Príklady
Teraz, keď sme pochopili základný koncept bitových operácií, pozrime sa na pár príkladov, ktoré vám pomôžu porozumieť bitovým operáciám v C ++:
- Príklad 1: Bitový operátor OR
- Príklad 2: Bitový operátor AND
- Príklad 3: Bitový operátor NOT
- Príklad 4: Bitový operátor XOR
- Príklad 5: Operátor bitového ľavého posuvu
- Príklad 6: Operátor bitového posunu doprava
- Príklad-7: Nastaviť bit
- Príklad-8: Vymazať bit
Príklady 7 a 8 slúžia na demonštráciu skutočného použitia bitových operátorov v programovacom jazyku C ++.
Príklad 1: Bitový operátor OR
V tomto príklade programu si ukážeme operátor Bitwise OR.
#include#include
#include
pomocou namespace std;
// funkcia display ()
void display (string print_msg, int number)
bitset<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á operácia ALEBO
výsledok = prvé_číslo | druhé_číslo;
// vypíše vstupné čísla
cout << endl;
display ("Prvé číslo je =", prvé_číslo);
display ("Druhé číslo je =", druhé_číslo);
// vypíše výstupnú hodnotu
display ("first_num | second_num =", výsledok);
cout << endl;
návrat 0;
Príklad 2: Bitový operátor AND
V tomto príklade programu ilustrujeme operátor Bitwise AND.
#include#include
#include
pomocou namespace std;
// funkcia display ()
void display (string print_msg, int number)
bitset<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á operácia AND
result = first_num & second_num;
// vytlačí vstupné čísla
cout << endl;
display ("Prvé číslo je =", prvé_číslo);
splay ("Druhé číslo je =", druhé_číslo);
// vypíše výstupnú hodnotu
display ("first_num & second_num =", výsledok);
cout << endl;
návrat 0;
Príklad 3: Bitový operátor NOT
V tomto príklade programu pochopíme, ako operátor Bitwise NOT pracuje v C++.
#include#include
#include
pomocou namespace std;
// funkcia display ()
void display (string print_msg, int number)
bitset<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á operácia NIE
result_1 = ~ prvé_číslo;
result_2 = ~ druhé_číslo;
// vypíše vstupné čísla a výstupné hodnoty
cout << endl;
display ("Prvé číslo je =", prvé_číslo);
display ("~ first_num =", result_1);
cout << endl;
// vypíše vstupné čísla a výstupné hodnoty
display ("Druhé číslo je =", druhé_číslo);
display ("~ second_num =", result_2);
cout << endl;
návrat 0;
Príklad 4: Bitový operátor XOR
Tento program má v úmysle vysvetliť, ako operátor Bitwise XOR pracuje v jazyku C++.
#include#include
#include
pomocou namespace std;
// funkcia display ()
void display (string print_msg, int number)
bitset<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á operácia XOR
výsledok = prvé_počet ^ druhé_počet;
// vypíše vstupné čísla
cout << endl;
display ("Prvé číslo je =", prvé_číslo);
display ("Druhé číslo je =", druhé_číslo);
// vypíše výstupnú hodnotu
display ("first_num ^ second_num =", výsledok);
cout << endl;
návrat 0;
Príklad 5: Operátor bitového ľavého posuvu
Teraz uvidíme príklad operátora Bitwise Left Shift. V tomto programe sme deklarovali dve čísla, first_num a second_num celočíselného typu. Tu je „first_num“ posunutý vľavo o jeden bit a „second_num“ vľavo posunutý o dva bity.
#include#include
#include
pomocou namespace std;
// funkcia display ()
void display (string print_msg, int number)
bitset<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á operácia ľavého posunu
výsledok_1 = prvé_číslo << 1;
výsledok_2 = druhé_číslo << 2;
// vypíše vstupné čísla a výstupné hodnoty
cout << endl;
display ("Prvé číslo je =", prvé_číslo);
display ("first_num << 1 = ", result_1);
cout << endl;
// vypíše vstupné čísla a výstupné hodnoty
display ("Druhé číslo je =", druhé_číslo);
display ("second_num << 2 = ", result_2);
cout << endl;
návrat 0;
Príklad 6: Operátor bitového posunu doprava
Teraz uvidíme ďalší príklad na pochopenie operátora Bitwise Right Shift. Deklarovali sme dve čísla, first_num a second_num celočíselného typu. Tu je „first_num“ doprava posunutá o jeden bit a „second_num“ doprava o dva bity.
#include#include
#include
pomocou namespace std;
// funkcia display ()
void display (string print_msg, int number)
bitset<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;
// Operácia bitového posunu doprava
výsledok_1 = prvé_číslo >> 1;
result_2 = druhé_číslo >> 2;
// vypíše vstupné čísla a výstupné hodnoty
cout << endl;
display ("Prvé číslo je =", prvé_číslo);
display ("first_num >> 1 =", result_1);
cout << endl;
// vypíše vstupné čísla a výstupné hodnoty
display ("Druhé číslo je =", druhé_číslo);
display ("druhe_cislo >> 2 =", vysledok_2);
cout << endl;
návrat 0;
Príklad-7: Nastaviť bit
Tento príklad má ukázať, ako nastaviť konkrétny bit pomocou bitových operátorov.
#include#include
#include
pomocou namespace std;
// funkcia display ()
void display (string print_msg, int number)
bitset<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9;
// vypíše vstupné číslo - prvé_číslo
cout << endl;
display ("Prvé číslo je =", prvé_číslo);
// Nastaviť 5. bit
first_num | = (1UL << 5);
// Tlačový výstup
display ("Nastaviť 5. bit first_num =", first_num);
cout << endl;
// vypíše vstupné číslo - druhé_číslo
cout << endl;
display ("Druhé číslo je =", druhé_číslo); // Nastaví šiesty bit
second_num | = (1UL << 6);
// Tlačový výstup
display ("Set 6. bit of second_num =", second_num);
cout << endl;
návrat 0;
Príklad-8: Vymazať bit
Tento príklad má ukázať, ako vyčistiť určitý bit pomocou bitových operátorov.
#include#include
#include
pomocou namespace std;
// funkcia display ()
void display (string print_msg, int number)
bitset<16> myBitSet (číslo);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9;
// vypíše vstupné číslo - prvé_číslo
cout << endl;
display ("Prvé číslo je =", prvé_číslo);
// Vymazať druhý bit
first_num & = ~ (1UL << 2);
// Tlačový výstup
display ("Nastaviť 2. bit first_num =", first_num);
cout << endl;
// vypíše vstupné číslo - druhé_číslo
cout << endl;
display ("Druhé číslo je =", druhé_číslo);
// Vymazať 3. bit
second_num & = ~ (1UL << 3);
// Tlačový výstup
display ("Set 3. bit of second_num =", second_num);
cout << endl;
návrat 0;
Záver
Bitový operátor sa primárne používa na manipuláciu s jednotlivými bitmi pre celočíselný a znakový údajový typ. Bitový operátor sa vo veľkej miere používa pri vývoji zabudovaného softvéru. Ak teda vyvíjate ovládač zariadenia alebo systém veľmi blízky úrovni hardvéru, môžete použiť tieto bitové operátory.