logo

Operadors bit a bit en C++

Hi ha diversos operadors presents en C++. Cada operador té un símbol particular així com una operació a realitzar. Tenim diverses categories d'operadors en C++.

  1. Operadors aritmètics
  2. Operadors relacionals
  3. Operadors lògics
  4. Operadors d'assignació
  5. Operadors per bits

En aquest article, coneixerem els operadors bit a bit en C++.



Operadors C++ per bits

Els operadors de bits són els operadors que s'utilitzen per realitzar operacions al nivell de bits sobre els nombres enters. Quan es realitza aquesta operació, els enters es consideren com a seqüències de dígits binaris. En C++, tenim diversos tipus d'operadors bit a bit.

  1. I per bits (&)
  2. O per bits (|)
  3. XOR bit a bit (^)
  4. Bit a bit NO (~)
  5. Maj esquerra (<<)
  6. Maj dreta (>>)

1. Bit a bit I (&)

L'operació AND bit a bit es realitza entre dos nombres enters, compararà cada bit a la mateixa posició i el bit del resultat s'establirà (1) només i només si els dos bits corresponents estan establerts (1). El símbol que s'utilitza per realitzar l'operació AND bit a bit és &.

invertint la cadena en java

Exemple : realitzarem una operació bit a bit entre dos nombres 7 i 4. En binari 7 es representarà com 111 i 4 es representarà com 100.

 1 1 1 & 1 0 0  ------  1 0 0>

com podem veure a l'exemple anterior, només aquells bits són bits establerts els bits corresponents (ambdós) estan establerts. Per tant 7&4=4

2. O per bits (|)

Si l'operació OR bit a bit es realitza entre dos nombres enters, compararà cada bit a la mateixa posició i el bit resultat s'establirà (1) si s'estableix algun dels bits corresponents (1). El símbol que s'utilitza per realitzar l'operació OR per bits és |.

Exemple: realitzarem una operació OR bit a bit entre dos nombres 7 i 4. en binari 7 es representarà com 111 i 4 es representarà com 100.

 1 1 1 | 1 0 0  ------  1 1 1>

com podem veure a l'exemple anterior, aquests bits són bits establerts els quals almenys un bit corresponent està establert. Per tant 7|4=7.

3. XOR bit a bit (^)

Si es realitza l'operació XOR per bits entre dos nombres enters, compararà cada bit a la mateixa posició i el bit resultat s'establirà (1) si algun dels bits corresponents difereix, és a dir, un d'ells hauria de ser 1 i l'altre hauria de ser zero. El símbol que s'utilitza per realitzar l'operació XOR per bits és ^.

dateformat.format java

Exemple: realitzarem l'operació XOR per bits entre dos nombres 7 i 4. en binari 7 es representarà com 111 i 4 es representarà com 100.

 1 1 1 ^ 1 0 0  ------  0 1 1>

com podem veure a l'exemple anterior, aquests bits són bits establerts els bits corresponents dels quals són diferents. Per tant 7^4=3.

4. Bit a bit NO (~)

L'operació NOT bit a bit es realitza en un sol número. Canvia el bit actual pel seu complement, és a dir, si el bit actual és 0, el resultat serà 1 i si el bit actual és 1, passarà a 0. Es denota amb el símbol ~.

Exemple: Realitzarem l'operació NOT bit a bit al número 4. El número 4 es representa com 100 en binari.

~ 1 0 0  ------  0 1 1>

Com podem veure en el resultat, els bits el valor inicial dels quals era 1 són 0 en el resultat i viceversa. Per tant, el bit a bit NO del número 4 serà 3.

5.Maj esquerra (<<)

Aquest operador desplaça els bits d'enter cap a l'esquerra per un nombre específic (com s'ha esmentat). Aquesta operació de desplaçament a l'esquerra equival a multiplicar l'enter per 2 el nombre de potències de posicions desplaçades. El símbol que s'utilitza per representar l'operador de canvi a l'esquerra és <<.

Exemple: Considereu que tenim un nombre enter 5 i desplaçarem els seus bits a l'esquerra en 2 posicions. L'operació es representarà com x << 2.

El número 5 es representa com 101 en binari. Afegirem uns zeros al principi per desplaçar els bits a l'esquerra. Per tant, es representarà com 00000101. Ara , mourem tots els bits dues posicions cap a l'esquerra i omplirem les posicions buides amb 0. Per tant, es convertirà en 00010100 que és 20 . Com s'ha esmentat anteriorment a l'esquerra, canviar el nombre de dos bits significa multiplicar-lo per 2 augmentat a 2, que és 4. 5*4 = 20 mostra l'afirmació esmentada anteriorment.

6.Majús dret (>>)

Aquest operador desplaça els bits d'enter cap a la dreta per un nombre específic (com s'ha esmentat). Aquesta operació de desplaçament a la dreta equival a dividir l'enter per 2 potències del nombre de posicions desplaçades. El símbol que s'utilitza per representar l'operador de canvi a l'esquerra és>>.

Exemple: Considereu que tenim un nombre enter 16 i desplaçarem els seus bits a la dreta en 2 posicions. L'operació es representarà com x>> 2.

El nombre 16 es representa com 10000 en binari. Afegirem uns zeros al principi per desplaçar els bits a la dreta. Per tant, es representarà com 00010000. Ara , mourem tots els bits dues posicions cap a la dreta i omplirem les posicions buides amb 0. Per tant es convertirà en 00000100 que és 4 . Com s'ha esmentat anteriorment, canviar el nombre a la dreta en dos bits significa dividir-lo per 2 augmentat a 2, que és 4. 16*4 = 4 mostra l'afirmació esmentada anteriorment.

alinear una imatge en css

Programa C++ Operadors per bits

A continuació es mostra la implementació del tema:

C++
// C++ Program to demonstrate // Bitwise Operator #include  using namespace std; // Main function int main()  b;  // Bitwise XOR  int bitwise_xor = a ^ b;  // Bitwise NOT  int bitwise_not = ~a;  // Bitwise Left Shift  int left_shift = a << 2;  // Bitwise Right Shift  int right_shift = a>> 1;  // Impressió dels resultats de // Operadors bit a bit cout<< 'AND: ' << bitwise_and << endl;  cout << 'OR: ' << bitwise_or << endl;  cout << 'XOR: ' << bitwise_xor << endl;  cout << 'NOT a: ' << bitwise_not << endl;  cout << 'Left Shift: ' << left_shift << endl;  cout << 'Right Shift: ' << right_shift << endl;  return 0;>

Sortida:

AND: 1 OR: 7 XOR: 6 NOT a: -6 Left Shift: 20 Right Shift: 2>

Conclusió

En conclusió, els operadors bit a bit s'utilitzen per realitzar operacions a nivell binari (bit). Tenim diversos tipus d'operadors de bits com AND, OR, XOR, NOT, desplaçament a l'esquerra i operadors de desplaçament a la dreta en C++. Amb aquestes operacions la manipulació de bits individuals es pot fer amb molta precisió, cosa que és essencial en el maneig de dades de baix nivell.