C ++

C ++ Operatori Bitwise

C ++ Operatori Bitwise
În acest articol, vom discuta despre operatorii bit-bit în limbajul de programare C ++. Vom vedea câteva exemple de lucru pentru a înțelege în detaliu operațiunile bit-bit. În C ++, operatorii bit-bit lucrează la nivelul de bit individual.

Scurtă prezentare a operatorilor Bitwise

Un operator este un simbol care instruiește compilatorul să efectueze anumite operații matematice sau logice. Există mai multe tipuri de operatori în C ++, cum ar fi:

  1. Operatori aritmetici
  2. Operatori logici
  3. Operatori relaționali
  4. Operatori de misiune
  5. Operatori Bitwise
  6. Operatori diferiți

Toți operatorii Bitwise funcționează la nivel de bit individual. Operatorul bitwise poate fi aplicat numai tipurilor de date întregi și de caractere. De exemplu, dacă aveți o variabilă de tip întreg cu dimensiunea de 32 de biți și aplicați o operațiune NU pe biți, operatorul NOT pe biți va fi aplicat pentru toți cei 32 de biți. Deci, în cele din urmă, toți cei 32 de biți din variabilă vor fi inversați.

Există șase operatori biți diferiți sunt disponibili în C ++:

  1. SAU în biți [reprezentat ca „|”]
  2. Bitwise ȘI [reprezentat ca „&”]
  3. Bitwise NU [reprezentat ca „~”]
  4. Bitwise XOR [reprezentat ca „^”]
  5. Shift stânga bit [reprezentat ca „<<”]
  6. Shift în dreapta bit [reprezentat ca „>>”]

Tabel bit ADO Adevăr

Operatorul bitwise OR produce 1 când cel puțin un operand este setat la 1. Iată tabelul de adevăr pentru operatorul Bitwise OR:

Bit-1 Bit-2 Bit-1 | Bit-2
0 0 0
0 1 1
1 0 1
1 1 1

Tabel bit și adevăr

Operatorul bitwise AND produce 1 când ambii operanzi sunt setați la 1. Iată tabelul de adevăr pentru operatorul Bitwise AND:

Bit-1 Bit-2 Bit-1 și Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Tabel Bit Adevăr NU

Operatorul bitwise NOT inversează operandul. Iată tabelul de adevăr pentru operatorul Bitwise NOT:

Bit-1 ~ Bit-1
0 1
1 0

Tabelul adevărului Bitwise XOR

Operatorul bitwise XOR produce 1 dacă și numai dacă unul dintre operanzi este setat la 1. Iată tabelul de adevăr pentru operatorul Bitwise AND:

Bit-1 Bit-2 Bit-1 ^ Bit-2
0 0 0
0 1 1
1 0 1
1 1 0

Operator de schimbare stânga pe biți

Operatorul Bitwise Left Shift deplasează toți biții lăsați de numărul specificat de biți specificați. Dacă ați lăsat să schimbați toți biții datelor cu 1, datele originale vor fi înmulțite cu 2. În mod similar, dacă ați lăsat să schimbați toți biții datelor cu 2, datele originale vor fi înmulțite cu 4.

Operator de schimbare în dreapta pe biți

Operatorul Bitwise Right Shift deplasează toți biții la dreapta cu numărul specificat de biți specificați. Dacă deplasați dreapta toți biții datelor la 1, datele originale vor fi împărțite (diviziune întreagă) la 2. În mod similar, dacă deplasați dreapta toți biții datelor cu 2, datele originale vor fi împărțite (diviziune întreagă) la 4.

Exemple

Acum, de vreme ce am înțeles conceptul de bază al operațiilor bit-bit, să ne uităm la câteva exemple, care vă vor ajuta să înțelegeți operațiile bitwise în C ++:

Exemplele-7 și 8 sunt pentru a demonstra utilizarea reală a operatorilor bit-bit în limbajul de programare C ++.

Exemplu-1: Operator SAU pe biți

În acest exemplu de program, vom demonstra operatorul OR Bitwise.

#include
#include
#include
folosind spațiul de nume std;
// funcția display ()
afișare nulă (șir print_msg, număr int)

bitset<16> myBitSet (număr);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result = 0;
// Operațiune OR bit
result = first_num | second_num;
// tipăriți numerele de intrare
cout << endl;
display ("Primul număr este =", first_num);
display ("Al doilea număr este =", al doilea număr);
// tipăriți valoarea de ieșire
display ("first_num | second_num =", rezultat);
cout << endl;
retur 0;

Exemplu-2: Operator bit și bit

În acest exemplu de program, vom ilustra operatorul Bitwise AND.

#include
#include
#include
folosind spațiul de nume std;
// funcția display ()
afișare nulă (șir print_msg, număr int)

bitset<16> myBitSet (număr);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result = 0;
// Operațiunea bitwise ȘI
result = first_num & second_num;
// tipăriți numerele de intrare
cout << endl;
display ("Primul număr este =", first_num);
splay ("Al doilea număr este =", al doilea număr);
// tipăriți valoarea de ieșire
display ("first_num & second_num =", rezultat);
cout << endl;
retur 0;

Exemplul-3: Operator bitwise NU

În acest exemplu de program, vom înțelege cum funcționează operatorul Bitwise NOT în C++.

#include
#include
#include
folosind spațiul de nume std;
// funcția display ()
afișare nulă (șir print_msg, număr int)

bitset<16> myBitSet (număr);
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;
// Operațiunea bitwise NU
result_1 = ~ first_num;
result_2 = ~ second_num;
// tipăriți numerele de intrare și valoarea de ieșire
cout << endl;
display ("Primul număr este =", first_num);
display ("~ first_num =", result_1);
cout << endl;
// tipăriți numerele de intrare și valoarea de ieșire
afișare ("Al doilea număr este =", al doilea număr);
display ("~ second_num =", result_2);
cout << endl;
retur 0;

Exemplul-4: Operator BitOR XOR

Acest program intenționează să explice cum funcționează operatorul Bitwise XOR în C++.

#include
#include
#include
folosind spațiul de nume std;
// funcția display ()
afișare nulă (șir print_msg, număr int)

bitset<16> myBitSet (număr);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9, result = 0;
// Operațiunea Bitwise XOR
result = first_num ^ second_num;
// tipăriți numerele de intrare
cout << endl;
display ("Primul număr este =", first_num);
display ("Al doilea număr este =", al doilea număr);
// tipăriți valoarea de ieșire
display ("first_num ^ second_num =", result);
cout << endl;
retur 0;

Exemplul-5: Operator de schimbare stânga pe biți

Acum, vom vedea exemplul operatorului Bitwise Left Shift. În acest program, am declarat două numere, first_num și second_num de tip întreg. Aici, „first_num” este deplasat la stânga cu un bit, iar „second_num” este deplasat la stânga cu doi biți.

#include
#include
#include
folosind spațiul de nume std;
// funcția display ()
afișare nulă (șir print_msg, număr int)

bitset<16> myBitSet (număr);
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;
// Operațiunea Bitwise Left Shift
result_1 = first_num << 1;
result_2 = second_num << 2;
// tipăriți numerele de intrare și valoarea de ieșire
cout << endl;
display ("Primul număr este =", first_num);
display ("first_num << 1     =  ", result_1);
cout << endl;
// tipăriți numerele de intrare și valoarea de ieșire
display ("Al doilea număr este =", al doilea număr);
afișaj ("numărul_al doilea << 2    =  ", result_2);
cout << endl;
retur 0;

Exemplu-6: Operator de schimbare dreapta pe biți

Acum, vom vedea un alt exemplu pentru a înțelege operatorul Bitwise Right Shift. Am declarat două numere, first_num și second_num de tip întreg. Aici, „first_num” este deplasat la dreapta cu un bit, iar „second_num” este deplasat la dreapta cu doi biți.

#include
#include
#include
folosind spațiul de nume std;
// funcția display ()
afișare nulă (șir print_msg, număr int)

bitset<16> myBitSet (număr);
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;
// Operațiunea Bitwise Right Shift
result_1 = first_num >> 1;
rezultat_2 = numărul_al doilea >> 2;
// tipăriți numerele de intrare și valoarea de ieșire
cout << endl;
display ("Primul număr este =", first_num);
display ("first_num >> 1 =", result_1);
cout << endl;
// tipăriți numerele de intrare și valoarea de ieșire
display ("Al doilea număr este =", al doilea număr);
afișare ("numărul_al doilea >> 2 =", rezultatul_2);
cout << endl;
retur 0;

Exemplu-7: Set Bit

Acest exemplu intenționează să arate cum să setați un anumit bit folosind operatori bit-bit.

#include
#include
#include
folosind spațiul de nume std;
// funcția display ()
afișare nulă (șir print_msg, număr int)

bitset<16> myBitSet (număr);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9;
// tipăriți numărul de intrare - first_num
cout << endl;
display ("Primul număr este =", first_num);
// Setați al 5-lea bit
first_num | = (1UL << 5);
// Imprimare
display ("Setați al 5-lea bit de first_num =", first_num);
cout << endl;
// tipăriți numărul de intrare - second_num
cout << endl;
display ("Al doilea număr este =", al doilea număr); // Setați al 6-lea bit
second_num | = (1UL << 6);
// Imprimare
display ("Setează al 6-lea bit de second_num =", second_num);
cout << endl;
retur 0;

Exemplu-8: Ștergeți bitul

Acest exemplu intenționează să arate cum să ștergeți un anumit bit folosind operatori bit-bit.

#include
#include
#include
folosind spațiul de nume std;
// funcția display ()
afișare nulă (șir print_msg, număr int)

bitset<16> myBitSet (număr);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int first_num = 7, second_num = 9;
// tipăriți numărul de intrare - first_num
cout << endl;
display ("Primul număr este =", first_num);
// Ștergeți al doilea bit
first_num & = ~ (1UL << 2);
// Imprimare
display ("Setează al doilea bit al first_num =", first_num);
cout << endl;
// tipăriți numărul de intrare - second_num
cout << endl;
display ("Al doilea număr este =", al doilea număr);
// Ștergeți al treilea bit
second_num & = ~ (1UL << 3);
// Imprimare
afișare ("Set 3rd bit of second_num =", second_num);
cout << endl;
retur 0;

Concluzie

Operatorul bitwise este utilizat în principal pentru a manipula biții individuali pentru tipul de date întregi și de caractere. Operatorul bitwise este foarte utilizat în dezvoltarea de software încorporat. Deci, dacă dezvoltați un driver de dispozitiv sau un sistem foarte apropiat de nivelul hardware, poate doriți să utilizați acești operatori bit-bit.

Battle for Wesnoth Tutorial
The Battle for Wesnoth is one of the most popular open source strategy games that you can play at this time. Not only has this game been in developmen...
0 A.D. Tutorial
Out of the many strategy games out there, 0 A.D. manages to stand out as a comprehensive title and a very deep, tactical game despite being open sourc...
Unity3D Tutorial
Introduction to Unity 3D Unity 3D is a powerful game development engine. It is cross platform that is it allows you to create games for mobile, web, d...