GNU/Linux >> Tutoriales Linux >  >> Linux

Tutorial de programación de Linux C Parte 14 - Ejemplos prácticos de operadores bit a bit

En uno de nuestros artículos anteriores, discutimos los conceptos básicos de los operadores bit a bit. Espero que haya leído ese artículo y ahora esté listo para presenciar y comprender algunos ejemplos prácticos de uso de estos operadores. Entonces, sin más preámbulos, comencemos.

1. Intercambiar valores de dos variables

Estoy seguro de que conoce la lógica para intercambiar valores de dos variables. Implica tomar una tercera variable para almacenar temporalmente un valor y luego asignar ese valor a una de las variables (cuyo valor original ya ha sido asignado a la otra variable).

Por ejemplo, si 'a' y 'b' son variables cuyos valores deben intercambiarse, y 'c' es la variable temporal, así es como funciona la lógica estándar:

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

Pero, ¿sabía que todo este proceso de intercambio se puede realizar a través de operadores bit a bit? Sí, eso es cierto, y la lógica, en ese caso, ni siquiera requiere una tercera variable. Aquí está el código:

#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;
}

Aquí está el resultado:

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. Comprobar el número de '1' binarios en un número

A veces puede encontrarse en una situación en la que necesita contar la cantidad de bits establecidos en '1' en un número. Te alegrará saber que puedes hacer esto fácilmente usando operadores bit a bit. Aquí está la lógica:

#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;
}

Aquí está el resultado:

Enter a number: 5 

Number of binary 1s in this number is 2

3. Programa en C para verificar si la posición de bit dada es 1 o no

A veces, especialmente cuando se trabaja en un código relacionado con redes informáticas (protocolos, etc.), es necesario que verifique si una posición de bit en particular está configurada en 1 o no. Esto se puede hacer fácilmente usando operadores bit a bit.

Aquí está el código:

 #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;
}

Aquí está el resultado:

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. Convierte un número decimal a su forma binaria

Los operadores bit a bit también se pueden usar para convertir un número decimal a su forma binaria. Aquí hay una lógica para ello:

#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;
}

Aquí estaba el resultado en mi caso:

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

Conclusión

Los cuatro ejemplos que mostramos aquí deberían ser suficientes para darle una buena idea de cómo se pueden usar los operadores bit a bit en escenarios del mundo real. Pruébelos en sus máquinas, ajústelos y hágalos hacer más o algo nuevo. Ante cualquier duda o consulta, deja un comentario aquí.


Linux
  1. Tutorial de Programación en C Parte 5 - Variables de carácter

  2. Tutorial de programación de Linux C Parte 10 - Ámbitos variables

  3. Tutorial de programación de Linux C Parte 9:Cadenas

  4. Tutorial de programación de Linux C, parte 8:llamada por valor frente a llamada por puntero/dirección

  5. Tutorial de programación de Linux C, parte 8:llamada por valor frente a llamada por puntero/dirección

Aprenda los comandos de Git con ejemplos prácticos en Linux - Parte 1

5 Ejemplos Prácticos del Comando “cd” en Linux

16 ejemplos prácticos del comando Traceroute en Linux

20 ejemplos prácticos del comando Chown en Linux

15 ejemplos prácticos del comando de localización en Linux

12 ejemplos prácticos de In Command en Linux