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++.
- Operatori aritmetici
- Operatori relazionali
- Operatori logici
- Operatori di assegnazione
- 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.
- AND bit a bit (&)
- OR bit a bit (|)
- XOR bit per bit (^)
- NOT bit a bit (~)
- Maiusc a sinistra (<<)
- 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.