logo

Operador bit a bit en C

Los operadores bit a bit son los operadores utilizados para realizar las operaciones con los datos a nivel de bits. Cuando realizamos operaciones bit a bit, también se conoce como programación a nivel de bits. Consta de dos dígitos, 0 o 1. Se utiliza principalmente en cálculos numéricos para agilizar los cálculos.

Disponemos de diferentes tipos de operadores bit a bit en el lenguaje de programación C. La siguiente es la lista de operadores bit a bit:

Operador Significado de operador
& Operador AND bit a bit
| Operador OR bit a bit
^ Operador OR exclusivo bit a bit
~ Operador complemento a uno (operador unario)
<< Operador de turno a la izquierda
>> Operador de cambio a la derecha

Veamos la tabla de verdad de los operadores bit a bit.

X Y X&Y X|Y X^Y
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 1

Operador AND bit a bit

El operador AND bit a bit se indica mediante el signo comercial único (&). Se escriben dos operandos enteros a ambos lados del operador (&). Si los bits correspondientes de ambos operandos son 1, entonces la salida de la operación AND bit a bit es 1; de lo contrario, la salida sería 0.

Por ejemplo,

 We have two variables a and b. a =6; b=4; The binary representation of the above two variables are given below: a = 0110 b = 0100 When we apply the bitwise AND operation in the above two variables, i.e., a&amp;b, the output would be: Result = 0100 

Como podemos observar en el resultado anterior, los bits de ambas variables se comparan uno por uno. Si el bit de ambas variables es 1, entonces la salida sería 1; de lo contrario, 0.

Entendamos el operador AND bit a bit a través del programa.

 #include int main() { int a=6, b=14; // variable declarations printf(&apos;The output of the Bitwise AND operator a&amp;b is %d&apos;,a&amp;b); return 0; } 

En el código anterior, hemos creado dos variables, es decir, 'a' y 'b'. Los valores de 'a' y 'b' son 6 y 14 respectivamente. El valor binario de 'a' y 'b' son 0110 y 1110, respectivamente. Cuando aplicamos el operador AND entre estas dos variables,

aYb = 0110 && 1110 = 0110

Producción

Operador bit a bit en C

Operador OR bit a bit

El operador OR bit a bit está representado por un único signo vertical (|). Se escriben dos operandos enteros a ambos lados del símbolo (|). Si el valor de bit de cualquiera de los operandos es 1, entonces la salida sería 1; de lo contrario, 0.

Por ejemplo,

 We consider two variables, a = 23; b = 10; The binary representation of the above two variables would be: a = 0001 0111 b = 0000 1010 When we apply the bitwise OR operator in the above two variables, i.e., a|b , then the output would be: Result = 0001 1111 

Como podemos observar en el resultado anterior, los bits de ambos operandos se comparan uno por uno; si el valor de cualquiera de los bits es 1, entonces la salida sería 1, de lo contrario 0.

Entendamos el operador OR bit a bit a través de un programa.

 #include int main() int a=23,b=10; // variable declarations printf(&apos;The output of the Bitwise OR operator a 

Producción

Operador bit a bit en C

Operador OR exclusivo bit a bit

El operador OR exclusivo bit a bit se indica con el símbolo (^). Se escriben dos operandos en ambos lados del operador OR exclusivo. Si el bit correspondiente de cualquiera de los operandos es 1, entonces la salida sería 1; de lo contrario, 0.

Por ejemplo,

carácter java a cadena
 We consider two variables a and b, a = 12; b = 10; The binary representation of the above two variables would be: a = 0000 1100 b = 0000 1010 When we apply the bitwise exclusive OR operator in the above two variables (a^b), then the result would be: Result = 0000 1110 

Como podemos observar en el resultado anterior, los bits de ambos operandos se comparan uno por uno; si el valor de bit correspondiente de cualquiera de los operandos es 1, entonces la salida sería 1, de lo contrario, 0.

Entendamos el operador OR exclusivo bit a bit a través de un programa.

 #include int main() { int a=12,b=10; // variable declarations printf(&apos;The output of the Bitwise exclusive OR operator a^b is %d&apos;,a^b); return 0; } 

Producción

Operador bit a bit en C

Operador de complemento bit a bit

El operador de complemento bit a bit también se conoce como operador de complemento a uno. Está representado por el símbolo tilde (~). Toma solo un operando o variable y realiza una operación de complemento en un operando. Cuando aplicamos la operación de complemento en cualquier bit, entonces 0 se convierte en 1 y 1 se convierte en 0.

Por ejemplo,

 If we have a variable named &apos;a&apos;, a = 8; The binary representation of the above variable is given below: a = 1000 When we apply the bitwise complement operator to the operand, then the output would be: Result = 0111 

Como podemos observar en el resultado anterior, si el bit es 1, se cambia a 0 o a 1.

Entendamos el operador complemento a través de un programa.

 #include int main() { int a=8; // variable declarations printf(&apos;The output of the Bitwise complement operator ~a is %d&apos;,~a); return 0; } 

Producción

Operador bit a bit en C

Operadores de desplazamiento bit a bit

Existen dos tipos de operadores de desplazamiento bit a bit en la programación C. Los operadores de desplazamiento bit a bit desplazarán los bits hacia el lado izquierdo o hacia el derecho. Por tanto, podemos decir que el operador de desplazamiento bit a bit se divide en dos categorías:

  • Operador de cambio a la izquierda
  • Operador de cambio a la derecha

Operador de cambio a la izquierda

Es un operador que desplaza el número de bits hacia el lado izquierdo.

La sintaxis del operador de desplazamiento a la izquierda se proporciona a continuación:

 Operand &lt;&lt; n 

Dónde,

El operando es una expresión entera a la que aplicamos la operación de desplazamiento a la izquierda.

n es el número de bits que se van a desplazar.

En el caso del operador de desplazamiento a la izquierda, 'n' bits se desplazarán hacia el lado izquierdo. Los 'n' bits del lado izquierdo aparecerán y los 'n' bits del lado derecho se rellenarán con 0.

Por ejemplo,

 Suppose we have a statement: int a = 5; The binary representation of &apos;a&apos; is given below: a = 0101 If we want to left-shift the above representation by 2, then the statement would be: a &lt;&lt; 2; 0101&lt;<2 = 00010100 < pre> <p> <strong>Let&apos;s understand through a program.</strong> </p> <pre> #include int main() { int a=5; // variable initialization printf(&apos;The value of a&lt;<2 is : %d ', a<<2); return 0; } < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/c-tutorial/51/bitwise-operator-c-5.webp" alt="Bitwise Operator in C"> <p> <strong>Right-shift operator</strong> </p> <p>It is an operator that shifts the number of bits to the right side.</p> <p> <strong>Syntax of the right-shift operator is given below:</strong> </p> <pre> Operand &gt;&gt; n; </pre> <p> <strong>Where,</strong> </p> <p>Operand is an integer expression on which we apply the right-shift operation.</p> <p>N is the number of bits to be shifted.</p> <p>In the case of the right-shift operator, &apos;n&apos; bits will be shifted on the right-side. The &apos;n&apos; bits on the right-side will be popped out, and &apos;n&apos; bits on the left-side are filled with 0.</p> <p> <strong>For example, </strong> </p> <pre> Suppose we have a statement, int a = 7; The binary representation of the above variable would be: a = 0111 If we want to right-shift the above representation by 2, then the statement would be: a&gt;&gt;2; 0000 0111 &gt;&gt; 2 = 0000 0001 </pre> <p> <strong>Let&apos;s understand through a program.</strong> </p> <pre> #include int main() { int a=7; // variable initialization printf(&apos;The value of a&gt;&gt;2 is : %d &apos;, a&gt;&gt;2); return 0; } </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/c-tutorial/51/bitwise-operator-c-6.webp" alt="Bitwise Operator in C"> <hr></2></pre></2>

Dónde,

El operando es una expresión entera a la que aplicamos la operación de desplazamiento a la derecha.

N es el número de bits que se van a desplazar.

opacidad de transición css

En el caso del operador de desplazamiento a la derecha, 'n' bits se desplazarán hacia el lado derecho. Los 'n' bits del lado derecho aparecerán y los 'n' bits del lado izquierdo se rellenarán con 0.

Por ejemplo,

 Suppose we have a statement, int a = 7; The binary representation of the above variable would be: a = 0111 If we want to right-shift the above representation by 2, then the statement would be: a&gt;&gt;2; 0000 0111 &gt;&gt; 2 = 0000 0001 

Entendamos a través de un programa.

 #include int main() { int a=7; // variable initialization printf(&apos;The value of a&gt;&gt;2 is : %d &apos;, a&gt;&gt;2); return 0; } 

Producción

Operador bit a bit en C