C ++

C ++ bitovni operatori

C ++ bitovni operatori
U ovom ćemo članku raspravljati o bitnim operatorima u programskom jeziku C ++. Vidjet ćemo nekoliko radnih primjera za detaljno razumijevanje bitnih operacija. U C ++-u bitni operatori rade na pojedinačnoj razini bita.

Kratki pregled bitovnih operatora

Operator je simbol koji daje sastavljaču uputu da izvrši određene matematičke ili logičke operacije. U C ++-u postoji nekoliko vrsta operatora, kao što su:

  1. Aritmetički operatori
  2. Logički operatori
  3. Relacijski operateri
  4. Operatori dodjele
  5. Bitovni operateri
  6. Razni operateri

Svi bitovni operatori rade na pojedinačnoj razini bitova. Bitovni operator može se primijeniti samo na cjelobrojne i znakovne tipove podataka. Na primjer, ako imate varijablu cjelobrojnog tipa veličine 32 bita i primijenite bitnu NE operaciju, bitni operator NOT primijenit će se na svih 32 bita. Dakle, na kraju će sva 32 bita u varijabli biti obrnuta.

U C ++-u je dostupno šest različitih bitnih operatora:

  1. Bitno ILI [predstavljeno kao „|“]
  2. Bitno I [predstavljeno kao „&“]
  3. Bitno NOT [predstavljeno kao „~“]
  4. Bitno XOR [predstavljeno kao „^“]
  5. Pomak ulijevo ulijevo [predstavljen kao „<<”]
  6. Pomicanje udesno udesno [predstavljeno kao „>>“]

Bitno ILI tablica istine

Operator Bitwise OR daje 1 kada je barem jedan operand postavljen na 1. Evo tablice istine za bitni ILI operator:

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

Bit-bit I tablica istine

Bitni operator AND daje 1 kada su oba operanda postavljena na 1. Evo tablice istine za bitni I operator:

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

Bitno NE tablica istine

Bitni operator NOT invertira operand. Evo tablice istine za bitni NE operator:

Bit-1 ~ Bit-1
0 1
1 0

Bitno XOR tablica istine

Bitno XOR operator daje 1 ako je i samo ako je jedan od operanda postavljen na 1. Evo tablice istine za bitni I operator:

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

Operator pomaka u smjeru lijevog pomicanja

Operator pomaka u smjeru lijevog pomaka pomiče sve bitove preostale za navedeni broj navedenih bitova. Ako ste pomaknuli sve bitove podataka ulijevo za 1, izvorni podaci pomnožit će se s 2. Slično tome, ako ste pomaknuli sve bitove podataka za 2, izvorni podaci pomnožit će se s 4.

Operator mjenjača u bitnom smjeru

Operator pomaka u bitovima pomiče sve bitove udesno za navedeni broj navedenih bitova. Ako sve bitove podataka pomaknete udesno za 1, izvorni podaci podijelit će se (cjelobrojna podjela) za 2. Slično tome, ako sve bitove podataka pomaknete udesno za 2, izvorni podaci podijelit će se (cjelobrojna podjela) za 4.

Primjeri

Budući da smo razumjeli osnovni koncept bitnih operacija, pogledajmo nekoliko primjera koji će vam pomoći da razumijete bitne operacije u C ++-u:

Primjeri 7 i 8 služe za prikazivanje stvarne upotrebe bitnih operatora u programskom jeziku C ++.

Primjer-1: Bitni ILI operator

U ovom primjeru programa demonstrirat ćemo bitni ILI operator.

#include
#include
#include
pomoću prostora imena std;
// funkcija display ()
prikaz praznine (string print_msg, int broj)

bitset<16> myBitSet (broj);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int prvi_broj = 7, drugi_broj = 9, rezultat = 0;
// Operacija u bitovima ILI
rezultat = prvi_broj | drugi_broj;
// ispis ulaznih brojeva
cout << endl;
prikaz ("Prvi broj je =", prvi_broj);
prikaz ("Drugi broj je =", drugi_broj);
// ispis izlazne vrijednosti
prikaz ("prvi_broj | drugi_broj =", rezultat);
cout << endl;
return 0;

Primjer-2: Bitni I operator

U ovom primjeru programa ilustrirat ćemo Bitwise AND operator.

#include
#include
#include
pomoću prostora imena std;
// funkcija display ()
prikaz praznine (string print_msg, int broj)

bitset<16> myBitSet (broj);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int prvi_broj = 7, drugi_broj = 9, rezultat = 0;
// Bitni rad I
rezultat = prvi_broj & drugi_broj;
// ispis ulaznih brojeva
cout << endl;
prikaz ("Prvi broj je =", prvi_broj);
splay ("Drugi broj je =", drugi_broj);
// ispis izlazne vrijednosti
prikaz ("prvi_broj & drugi_broj =", rezultat);
cout << endl;
return 0;

Primjer-3: Bitni NE operator

U ovom primjeru programa razumjet ćemo kako Bitwise NOT operater radi u C-u++.

#include
#include
#include
pomoću prostora imena std;
// funkcija display ()
prikaz praznine (string print_msg, int broj)

bitset<16> myBitSet (broj);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int prvi_broj = 7, drugi_broj = 9, rezultat_1 = 0, rezultat_2 = 0;
// Bitno NE rad
rezultat_1 = ~ prvi_broj;
rezultat_2 = ~ drugi_broj;
// ispisati ulazne brojeve i izlaznu vrijednost
cout << endl;
prikaz ("Prvi broj je =", prvi_broj);
prikaz ("~ prvi_broj =", rezultat_1);
cout << endl;
// ispisati ulazne brojeve i izlaznu vrijednost
prikaz ("Drugi broj je =", drugi_broj);
prikaz ("~ second_num =", rezultat_2);
cout << endl;
return 0;

Primjer-4: Bitni XOR operator

Ovaj program namjerava objasniti kako Bitwise XOR operator radi u C-u++.

#include
#include
#include
pomoću prostora imena std;
// funkcija display ()
prikaz praznine (string print_msg, int broj)

bitset<16> myBitSet (broj);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int prvi_broj = 7, drugi_broj = 9, rezultat = 0;
// Bitno XOR rad
rezultat = prvi_broj ^ drugi_broj;
// ispis ulaznih brojeva
cout << endl;
prikaz ("Prvi broj je =", prvi_broj);
prikaz ("Drugi broj je =", drugi_broj);
// ispis izlazne vrijednosti
prikaz ("prvi_broj ^ drugi_broj =", rezultat);
cout << endl;
return 0;

Primjer-5: Operator lijevog pomaka u bitovima

Sada ćemo vidjeti primjer operatora Bitwise Left Shift. U ovom smo programu deklarirali dva broja, prvi_broj i drugi_broj cijelog broja. Ovdje je "prvi_broj" pomaknut za jedan bit ulijevo, a "drugi_num" za dva bita.

#include
#include
#include
pomoću prostora imena std;
// funkcija display ()
prikaz praznine (string print_msg, int broj)

bitset<16> myBitSet (broj);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int prvi_broj = 7, drugi_broj = 9, rezultat_1 = 0, rezultat_2 = 0;
// Operacija pomaka u smjeru lijevog pomaka
rezultat_1 = prvi_broj << 1;
rezultat_2 = drugi_broj << 2;
// ispisati ulazne brojeve i izlaznu vrijednost
cout << endl;
prikaz ("Prvi broj je =", prvi_broj);
display ("prvi_broj << 1     =  ", result_1);
cout << endl;
// ispisati ulazne brojeve i izlaznu vrijednost
prikaz ("Drugi broj je =", drugi_broj);
display ("drugi_broj << 2    =  ", result_2);
cout << endl;
return 0;

Primjer-6: Operator mjenjača u bitnom smjeru

Sad ćemo vidjeti još jedan primjer za razumijevanje operatora Bitwise Right Shift. Proglasili smo dva broja, prvi_broj i drugi_broj cijelog broja. Ovdje je "prvi_broj" pomaknut udesno za jedan bit, a "drugi_broj" udesno za dva bita.

#include
#include
#include
pomoću prostora imena std;
// funkcija display ()
prikaz praznine (string print_msg, int broj)

bitset<16> myBitSet (broj);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int prvi_broj = 7, drugi_broj = 9, rezultat_1 = 0, rezultat_2 = 0;
// Operacija pomaka u smjeru bita udesno
rezultat_1 = prvi_broj >> 1;
rezultat_2 = drugi_broj >> 2;
// ispisati ulazne brojeve i izlaznu vrijednost
cout << endl;
prikaz ("Prvi broj je =", prvi_broj);
prikaz ("prvi_broj >> 1 =", rezultat_1);
cout << endl;
// ispisati ulazne brojeve i izlaznu vrijednost
prikaz ("Drugi broj je =", drugi_broj);
prikaz ("second_num >> 2 =", rezultat_2);
cout << endl;
return 0;

Primjer-7: Postavi bit

Ovaj primjer želi pokazati kako postaviti određeni bit pomoću bitnih operatora.

#include
#include
#include
pomoću prostora imena std;
// funkcija display ()
prikaz praznine (string print_msg, int broj)

bitset<16> myBitSet (broj);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int prvi_broj = 7, drugi_broj = 9;
// ispis ulaznog broja - first_num
cout << endl;
prikaz ("Prvi broj je =", prvi_broj);
// Postavi 5. bit
prvi_broj | = (1UL << 5);
// Ispis rezultata
prikaz ("Postavi 5. bit prvog_broja =", prvi_broj);
cout << endl;
// ispis ulaznog broja - second_num
cout << endl;
display ("Second Number is =", second_num); // Postavi 6. bit
drugi_broj | = (1UL << 6);
// Ispis rezultata
prikaz ("Postavi 6. bit sekundarnog broja =", drugi_broj);
cout << endl;
return 0;

Primjer-8: Očisti bit

Ovaj primjer namjerava pokazati kako očistiti određeni bit pomoću bitnih operatora.

#include
#include
#include
pomoću prostora imena std;
// funkcija display ()
prikaz praznine (string print_msg, int broj)

bitset<16> myBitSet (broj);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int prvi_broj = 7, drugi_broj = 9;
// ispis ulaznog broja - first_num
cout << endl;
prikaz ("Prvi broj je =", prvi_broj);
// Očisti 2. bit
prvi_broj & = ~ (1UL << 2);
// Ispis rezultata
prikaz ("Postavi 2. bit prvog_broja =", prvi_broj);
cout << endl;
// ispis ulaznog broja - second_num
cout << endl;
prikaz ("Drugi broj je =", drugi_broj);
// Očisti 3. bit
drugi_broj & = ~ (1UL << 3);
// Ispis rezultata
prikaz ("Postavi 3. bit sekundnog broja =", drugi_broj);
cout << endl;
return 0;

Zaključak

Bitovni operator prvenstveno se koristi za manipulaciju pojedinačnim bitovima za cijeli broj podataka i tip znakova. Bitovni operator se jako koristi u razvoju ugrađenog softvera. Dakle, ako razvijate upravljački program uređaja ili sustav vrlo blizu hardverske razine, možda ćete htjeti koristiti ove bitne operatore.

Kako razviti igru ​​na Linuxu
Prije deset godina malo je Linux korisnika predviđalo da će njihov omiljeni operativni sustav jednog dana biti popularna platforma za igranje komercij...
Luke komercijalnih igara s otvorenim kodom
Besplatne igre s otvorenim kodom i više platformi mogu se koristiti za igranje starih, kao i nekih prilično nedavnih naslova igara. U ovom će se člank...
Najbolje igre naredbenog retka za Linux
Naredbeni redak nije samo vaš najveći saveznik pri korištenju Linuxa - on također može biti izvor zabave jer ga možete koristiti za igranje mnogih zab...