C++

Operatori C++ bit a bit

Operatori C++ bit a bit
In questo articolo, discuteremo degli operatori bit a bit nel linguaggio di programmazione C++. Vedremo diversi esempi di lavoro per comprendere in dettaglio le operazioni bit per bit. In C++, gli operatori bit a bit lavorano a livello di bit individuale.

Breve panoramica degli operatori bit a bit

Un operatore è un simbolo che indica al compilatore di eseguire determinate operazioni matematiche o logiche. Esistono diversi tipi di operatori in C++, come:

  1. Operatori aritmetici
  2. Operatori logici
  3. Operatori Relazionali
  4. Operatori di assegnazione
  5. Operatori bit a bit
  6. Operatori vari

Tutti gli operatori Bitwise lavorano a livello di singolo bit. L'operatore bit a bit può essere applicato solo ai tipi di dati intero e carattere. Ad esempio, se si dispone di una variabile di tipo intero con la dimensione di 32 bit e si applica l'operazione NOT bit per bit, l'operatore NOT bit per bit verrà applicato per tutti i 32 bit. Quindi, alla fine, tutti i 32 bit nella variabile saranno invertiti.

In C++ sono disponibili sei diversi operatori bit a bit:

  1. OR bit per bit [rappresentato come "|"]
  2. AND bit per bit [rappresentato come "&"]
  3. Bitwise NOT [rappresentato come "~"]
  4. XOR bit per bit [rappresentato come "^"]
  5. Maiusc a sinistra bit per bit [rappresentato come "<<”]
  6. Maiusc a destra bit per bit [rappresentato come ">>"]

Tabella della verità OR bit a bit

L'operatore OR bit per bit produce 1 quando almeno un operando è impostato su 1. Ecco la tabella di verità per l'operatore OR bit per bit:

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

Tabella bit a bit E verità

L'operatore AND bit per bit produce 1 quando entrambi gli operandi sono impostati su 1. Ecco la tabella di verità per l'operatore AND bit per bit:

Bit-1 Bit-2 Bit-1 e Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Tabella della verità NOT bit a bit

L'operatore NOT bit a bit inverte l'operando. Ecco la tabella di verità per l'operatore NOT bit a bit:

Bit-1 ~Bit-1
0 1
1 0

Tabella della verità XOR bit a bit

L'operatore XOR bit per bit produce 1 se, e solo se, uno degli operandi è impostato su 1. Ecco la tabella della verità per l'operatore AND bit per bit:

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

Operatore di spostamento a sinistra bit per bit

L'operatore Bitwise Left Shift sposta tutti i bit a sinistra del numero specificato di bit specificato. Se hai lasciato spostare tutti i bit dei dati di 1, i dati originali verranno moltiplicati per 2. Allo stesso modo, se hai lasciato spostare tutti i bit dei dati di 2, i dati originali verranno moltiplicati per 4.

Operatore di spostamento a destra bit per bit

L'operatore Bitwise Right Shift sposta tutti i bit a destra del numero specificato di bit specificati. Se sposti a destra tutti i bit dei dati di 1, i dati originali verranno divisi (divisione intera) per 2. Allo stesso modo, se sposti a destra tutti i bit dei dati di 2, i dati originali verranno divisi (divisione intera) per 4.

Esempi

Ora, poiché abbiamo compreso il concetto di base delle operazioni bit per bit, esaminiamo un paio di esempi, che ti aiuteranno a comprendere le operazioni bit per bit in C++:

Gli esempi 7 e 8 servono a dimostrare l'utilizzo nel mondo reale degli operatori bit a bit nel linguaggio di programmazione C++.

Esempio 1: Operatore OR bit per bit

In questo programma di esempio, dimostreremo l'operatore OR bit per bit.

#includere
#includere
#includere
usando lo spazio dei nomi std;
// funzione display()
void display(stringa print_msg, int numero)

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

intero principale()

int primo_num = 7, secondo_num = 9, risultato = 0;
// Operazione OR bit per bit
risultato = primo_num | secondo_num;
// stampa i numeri di input
cout << endl;
display("Il primo numero è        =  ", first_num);
display("Il secondo numero è       =  ", secondo_num);
// stampa il valore di output
display("first_num | second_num =  ", risultato);
cout << endl;
restituisce 0;

Esempio-2: Operatore AND bit per bit

In questo programma di esempio, illustreremo l'operatore AND bit per bit.

#includere
#includere
#includere
usando lo spazio dei nomi std;
// funzione display()
void display(stringa print_msg, int numero)

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

intero principale()

int primo_num = 7, secondo_num = 9, risultato = 0;
// Operazione AND bit per bit
risultato = primo_num & secondo_num;
// stampa i numeri di input
cout << endl;
display("Il primo numero è        =  ", first_num);
splay("Il secondo numero è       =  ", secondo_num);
// stampa il valore di output
display("first_num & second_num =  ", risultato);
cout << endl;
restituisce 0;

Esempio 3: operatore NOT bit a bit

In questo programma esempio, capiremo come funziona l'operatore NOT Bitwise in C++.

#includere
#includere
#includere
usando lo spazio dei nomi std;
// funzione display()
void display(stringa print_msg, int numero)

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

intero principale()

int primo_num = 7, secondo_num = 9, risultato_1 = 0, risultato_2 = 0;
// Operazione NOT bit per bit
risultato_1 = ~primo_num;
risultato_2 = ~secondo_num;
// stampa i numeri di input e il valore di output
cout << endl;
display("Il primo numero è    =  ", first_num);
display("~first_num         =  ", risultato_1);
cout << endl;
// stampa i numeri di input e il valore di output
display("Il secondo numero è   =  ", secondo_num);
display("~second_num         =  ", risultato_2);
cout << endl;
restituisce 0;

Esempio-4: Operatore XOR bit a bit

Questo programma intende spiegare come funziona l'operatore Bitwise XOR in C++.

#includere
#includere
#includere
usando lo spazio dei nomi std;
// funzione display()
void display(stringa print_msg, int numero)

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

intero principale()

int primo_num = 7, secondo_num = 9, risultato = 0;
// Operazione XOR bit per bit
risultato = primo_num ^ secondo_num;
// stampa i numeri di input
cout << endl;
display("Il primo numero è        =  ", first_num);
display("Il secondo numero è       =  ", secondo_num);
// stampa il valore di output
display("first_num ^ second_num =  ", risultato);
cout << endl;
restituisce 0;

Esempio 5: Operatore di spostamento a sinistra bit per bit

Ora vedremo l'esempio dell'operatore Bitwise Left Shift. In questo programma abbiamo dichiarato due numeri, first_num e second_num di tipo interote. Qui, il "first_num" è spostato a sinistra di un bit e il "second_num" è spostato a sinistra di due bit.

#includere
#includere
#includere
usando lo spazio dei nomi std;
// funzione display()
void display(stringa print_msg, int numero)

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

intero principale()

int primo_num = 7, secondo_num = 9, risultato_1 = 0, risultato_2 = 0;
// Operazione di spostamento a sinistra bit per bit
risultato_1 = primo_num << 1;
risultato_2 = secondo_num << 2;
// stampa i numeri di input e il valore di output
cout << endl;
display("Il primo numero è    =  ", first_num);
display("first_num << 1     =  ", result_1);
cout << endl;
// stampa i numeri di input e il valore di output
display("Il secondo numero è   =  ", secondo_num);
display("secondo_num << 2    =  ", result_2);
cout << endl;
restituisce 0;

Esempio 6: Operatore di spostamento a destra bit per bit

Ora vedremo un altro esempio per capire l'operatore Bitwise Right Shift. Abbiamo dichiarato due numeri, first_num e second_num di tipo intero. Qui, il "first_num" è spostato a destra di un bit e il "second_num" è spostato a destra di due bit.

#includere
#includere
#includere
usando lo spazio dei nomi std;
// funzione display()
void display(stringa print_msg, int numero)

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

intero principale()

int primo_num = 7, secondo_num = 9, risultato_1 = 0, risultato_2 = 0;
// Operazione di spostamento a destra bit per bit
risultato_1 = primo_num >> 1;
risultato_2 = secondo_num >> 2;
// stampa i numeri di input e il valore di output
cout << endl;
display("Il primo numero è    =  ", first_num);
display("first_num >> 1     =  ", risultato_1);
cout << endl;
// stampa i numeri di input e il valore di output
display("Il secondo numero è   =  ", secondo_num);
display("second_num >> 2     =  ", risultato_2);
cout << endl;
restituisce 0;

Esempio-7: Imposta Bit

Questo esempio intende  mostrare come impostare un particolare bit utilizzando operatori bit a bit.

#includere
#includere
#includere
usando lo spazio dei nomi std;
// funzione display()
void display(stringa print_msg, int numero)

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

intero principale()

int primo_num = 7, secondo_num = 9;
// stampa il numero di input - first_num
cout << endl;
display("Il primo numero è           =  ", first_num);
// Imposta il quinto bit
primo_num |= (1UL << 5);
// Stampa l'output
display("Imposta il quinto bit di first_num  =  ", first_num);
cout << endl;
// stampa il numero di input - second_num
cout << endl;
display("Il secondo numero è           =  ", secondo_num);// Imposta il 6° bit
secondo_num |= (1UL << 6);
// Stampa l'output
display("Imposta il 6° bit di second_num  =  ", second_num);
cout << endl;
restituisce 0;

Esempio-8: Cancella Bit

Questo esempio intende mostrare come cancellare un particolare bit usando operatori bit a bit.

#includere
#includere
#includere
usando lo spazio dei nomi std;
// funzione display()
void display(stringa print_msg, int numero)

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

intero principale()

int primo_num = 7, secondo_num = 9;
// stampa il numero di input - first_num
cout << endl;
display("Il primo numero è           =  ", first_num);
// Cancella il secondo bit
primo_num &= ~(1UL << 2);
// Stampa l'output
display("Imposta il 2° bit di first_num  =  ", first_num);
cout << endl;
// stampa il numero di input - second_num
cout << endl;
display("Il secondo numero è           =  ", secondo_num);
// Cancella il 3° bit
secondo_num &= ~(1UL << 3);
// Stampa l'output
display("Imposta il 3° bit di second_num  =  ", second_num);
cout << endl;
restituisce 0;

Conclusione

L'operatore bit a bit viene utilizzato principalmente per manipolare i singoli bit per il tipo di dati intero e carattere. L'operatore bit a bit è molto utilizzato nello sviluppo di software embedded. Quindi, se stai sviluppando un driver di dispositivo o un sistema molto vicino al livello hardware, potresti voler usare questi operatori bit a bit.

I 5 migliori giochi arcade per Linux
Al giorno d'oggi, i computer sono macchine serie utilizzate per i giochi. Se non riesci a ottenere il nuovo punteggio più alto, saprai cosa intendo. I...
Battaglia per Wesnoth 1.13.6 Sviluppo rilasciato
Battaglia per Wesnoth 1.13.6 rilasciato il mese scorso, è la sesta versione di sviluppo nella 1.13.x e offre una serie di miglioramenti, in particolar...
Come installare League Of Legends su Ubuntu 14.04
Se sei un fan di League of Legends, questa è un'opportunità per testare League of Legends. Nota che LOL è supportato su PlayOnLinux se sei un utente L...