logo

Operatori bit a bit in C++

Ci sono vari operatori presenti in C++. Ogni Operatore ha un simbolo particolare e un'Operazione da eseguire. Abbiamo varie categorie di operatori in C++.

  1. Operatori aritmetici
  2. Operatori relazionali
  3. Operatori logici
  4. Operatori di assegnazione
  5. Operatori bit a bit

In questo articolo impareremo a conoscere gli operatori bit a bit in C++.



Operatori bit a bit C++

Gli operatori bit a bit sono gli operatori utilizzati per eseguire operazioni a livello di bit sugli interi. Durante l'esecuzione di questa operazione gli interi vengono considerati come sequenze di cifre binarie. In C++ abbiamo vari tipi di operatori bit a bit.

  1. AND bit a bit (&)
  2. OR bit a bit (|)
  3. XOR bit per bit (^)
  4. NOT bit a bit (~)
  5. Maiusc a sinistra (<<)
  6. Maiusc destra (>>)

1. AND bit a bit (&)

L'operazione AND bit a bit viene eseguita tra due numeri interi. Confronterà ciascun bit nella stessa posizione e il bit del risultato verrà impostato (1) solo e solo se entrambi i bit corrispondenti sono impostati (1). Il simbolo utilizzato per eseguire l'operazione AND bit a bit è &.

Esempio : eseguiremo un'operazione Bitwise tra due numeri 7 e 4. In binario 7 sarà rappresentato come 111 e 4 sarà rappresentato come 100.

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

come possiamo vedere nell'esempio precedente, sono impostati solo quei bit i cui bit corrispondenti (entrambi) sono impostati. Pertanto 7&4=4

2. OR bit a bit (|)

Se l'operazione OR bit a bit viene eseguita tra due numeri interi, confronterà ciascun bit sulla stessa posizione e il bit del risultato verrà impostato (1) se uno qualsiasi dei bit corrispondenti è impostato (1). Il simbolo utilizzato per eseguire l'operazione OR bit per bit è |.

Esempio: eseguiremo un'operazione OR bit a bit tra due numeri 7 e 4. in binario 7 sarà rappresentato come 111 e 4 sarà rappresentato come 100.

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

come possiamo vedere nell'esempio precedente, quei bit sono bit impostati di cui è impostato almeno un bit corrispondente. Quindi 7|4=7.

3. XOR bit a bit (^)

Se l'operazione XOR bit a bit viene eseguita tra due numeri interi, confronterà ciascun bit nella stessa posizione e il bit del risultato verrà impostato (1) se uno qualsiasi dei bit corrispondenti differisce, ovvero uno di essi dovrebbe essere 1 e l'altro dovrebbe essere zero. Il simbolo utilizzato per eseguire l'operazione XOR bit a bit è ^.

Esempio: eseguiremo un'operazione XOR bit a bit tra due numeri 7 e 4. in binario 7 sarà rappresentato come 111 e 4 sarà rappresentato come 100.

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

come possiamo vedere nell'esempio sopra, quei bit sono bit impostati i cui bit corrispondenti sono diversi. Pertanto 7^4=3.

4.NON bit a bit (~)

L'operazione Bitwise NOT viene eseguita su un singolo numero. Cambia il bit corrente nel suo complemento, cioè se il bit corrente è 0, il risultato sarà 1 e se il bit corrente è 1, diventerà 0. È indicato dal simbolo ~.

Esempio: Eseguiremo l'operazione NOT bit a bit sul numero 4. Il numero 4 è rappresentato come 100 in binario.

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

Come possiamo vedere nel risultato, i bit il cui valore iniziale era 1 sono 0 nel risultato e viceversa. Pertanto il NOT bit a bit del numero 4 sarà 3.

5.Maiusc a sinistra (<<)

Questo operatore sposta i bit dell'intero a sinistra in base a un numero specifico (come accennato). Questa operazione di spostamento a sinistra equivale a moltiplicare il numero intero per 2 il numero di posizioni spostate. Il simbolo utilizzato per rappresentare l'operatore Shift sinistro è <<.

Esempio: Considera di avere un numero intero 5 e sposteremo i suoi bit a sinistra di 2 posizioni. L'operazione verrà rappresentata come x << 2.

Il numero 5 è rappresentato come 101 in binario. Aggiungeremo alcuni zeri all'inizio per spostare i bit a sinistra. Pertanto verrà rappresentato come 00000101. Ora sposteremo tutti i bit di due posizioni a sinistra e riempiremo le posizioni vuote con 0. Diventerà quindi 00010100 che è 20 . Come accennato in precedenza, spostare a sinistra il numero di due bit significa moltiplicarlo per 2 elevato a 2 che è 4 . 5*4 = 20 mostra l'affermazione sopra menzionata.

6.Maiusc destra (>>)

Questo operatore sposta i bit dell'intero a destra in base a un numero specifico (come accennato). Questa operazione di spostamento a destra equivale a dividere l'intero per 2 potenze del numero di posizioni spostate. Il simbolo utilizzato per rappresentare l'operatore Shift sinistro è>>.

Esempio: Considera di avere un numero intero 16 e sposteremo i suoi bit a destra di 2 posizioni. L'operazione sarà rappresentata come x>> 2.

Il numero 16 è rappresentato come 10000 in binario. Aggiungeremo alcuni zeri all'inizio per spostare a destra i bit. Pertanto verrà rappresentato come 00010000. Ora sposteremo tutti i bit di due posizioni a destra e riempiremo le posizioni vuote con 0. Pertanto diventerà 00000100 che è 4 . Come accennato in precedenza, spostare a destra il numero di due bit significa dividerlo per 2 elevato a 2 che è 4 . 16*4 = 4 mostra l'affermazione sopra menzionata.

Operatori bit a bit del programma C++

Di seguito è riportata l'implementazione dell'argomento:

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;  // Stampa dei risultati degli // operatori 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;>

Produzione:

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

Conclusione

In conclusione, gli operatori bit a bit vengono utilizzati per eseguire operazioni a livello binario (bit). Abbiamo vari tipi di operatori bit a bit come operatori AND, OR, XOR, NOT, spostamento a sinistra e spostamento a destra in C++. Con queste operazioni la manipolazione dei singoli bit può essere eseguita in modo molto preciso, il che è essenziale nella gestione dei dati di basso livello.