GNU/Linux >> Linux Esercitazione >  >> Linux

Esercitazione sulla programmazione in Linux C Parte 14 - Esempi pratici di operatori bit a bit

In uno dei nostri articoli precedenti, abbiamo discusso le basi degli operatori bit per bit. Spero che tu abbia letto quell'articolo e ora sia pronto per testimoniare e comprendere alcuni esempi pratici di utilizzo di questi operatori. Quindi, senza ulteriori indugi, iniziamo.

1. Scambia i valori di due variabili

Sono sicuro che saresti a conoscenza della logica per scambiare i valori di due variabili. Si tratta di prendere una terza variabile per memorizzare temporaneamente un valore e quindi assegnare quel valore a una delle variabili (il cui valore originale è già stato assegnato all'altra variabile).

Ad esempio, se 'a' e 'b' sono variabili i cui valori devono essere scambiati e 'c' è la variabile temporanea, ecco come va la logica standard:

c = a;
a = b;
b = c;

Ma sapevi che l'intero processo di scambio può essere eseguito tramite operatori bit per bit? Sì, è vero, e la logica, in quel caso, non richiede nemmeno una terza variabile. Ecco il codice:

#include <stdio.h>

int main()
{
int a, b;

printf("Enter first number: ");
scanf("%d", &a);

printf("Enter second number: ");
scanf("%d", &b);

printf("As per your input, a = %d, and b = %d", a,b);

a = a ^ b;
b = a ^ b;
a = a ^ b;

printf("\nAfter swapping, a = %d, and b = %d", a,b);


return 0;
}

Ecco l'output:

Enter first number: 7 
Enter second number: 2
As per your input, a = 7, and b = 2
After swapping, a = 2, and b = 7

2. Controlla il numero di '1' binari in un numero

A volte potresti trovarti in una situazione in cui devi contare il numero di bit impostato su "1" in un numero. Sarai felice di sapere che puoi farlo facilmente usando gli operatori bit per bit. Ecco la logica:

#include <stdio.h>

int main()
{
int a, num_of_bits = 0;

printf("Enter a number: ");
scanf("%d", &a);

while(a)
{
if(a & 1)
num_of_bits++;

a = a >> 1;
}

printf("\nNumber of binary 1s in this number is %d", num_of_bits);

return 0;
}

Ecco l'output:

Enter a number: 5 

Number of binary 1s in this number is 2

3. Programma C per verificare se la posizione data del bit è 1 o meno

A volte, specialmente quando si lavora su un codice correlato alla rete di computer (protocolli, ecc.), è necessario verificare se una particolare posizione di bit è impostata o meno su 1 o meno. Questo può essere fatto facilmente usando gli operatori bit per bit.

Ecco il codice:

 #include <stdio.h>

int main()
{
int num, position, temp;

printf("Enter a number: ");
scanf("%d", &num);

printf("Enter the bit position (keeping zero as base index and 31 as max): ");
scanf("%d", &position);

if(((num>>position)&1) == 1)
printf("\nBit at the position is 1");
else
printf("\nBit at the position is 0");

return 0;
}

Ecco l'output:

Enter a number: 2 
Enter the bit position (keeping zero as base index and 31 as max): 3

Bit at the position is 0

4. Converti il ​​numero decimale nella sua forma binaria

Gli operatori bit per bit possono anche essere utilizzati per convertire un numero decimale nella sua forma binaria. Ecco una logica:

#include <stdio.h>

int main()
{
int num, i = 0, temp = 0;
int bin[32] = {0}; // this will initialize all array elements to 0

/* Input number from user */
printf("Enter any number: ");
scanf("%d", &num);

for(i =31; i>=0; i--)
{
if((num & 1) == 1)
{
bin[i] = 1;

num = num>>1;
}

printf("The binary form of the number you entered is: ");

for(i=0; i<32; i++)
{
printf("%d",bin[i]);
}

return 0;
}

Ecco l'output nel mio caso:

Enter any number: 15 
The binary form of the number you entered is: 00000000000000000000000000001111

Conclusione

I quattro esempi che abbiamo mostrato qui dovrebbero essere sufficienti per darti una buona idea di come gli operatori bit per bit possono essere utilizzati in scenari del mondo reale. Provali sulle tue macchine, modificali e falli fare di più o qualcosa di nuovo. In caso di dubbi o domande, lascia un commento qui.


Linux
  1. C Tutorial di programmazione Parte 5 - Variabili di carattere

  2. Esercitazione sulla programmazione C Linux Parte 10 - Ambiti variabili

  3. Esercitazione sulla programmazione C Linux Parte 9:Stringhe

  4. Esercitazione sulla programmazione C Linux Parte 8 - Chiamata per valore Vs Chiamata per puntatore/indirizzo

  5. Esercitazione sulla programmazione C Linux Parte 8 - Chiamata per valore Vs Chiamata per puntatore/indirizzo

Impara i comandi Git con esempi pratici su Linux - Parte 1

5 Esempi pratici di comando "cd" in Linux

16 Esempi pratici di comando traceroute in Linux

20 esempi pratici di comando Chown in Linux

15 Esempi pratici di Localizza comando in Linux

12 Esempi pratici di In Command in Linux