logo

Operador bit a bit en C

Els operadors bit a bit són els operadors utilitzats per realitzar les operacions sobre les dades a nivell de bit. Quan realitzem les operacions de bits, també es coneix com a programació a nivell de bits. Consta de dos dígits, 0 o 1. S'utilitza principalment en càlculs numèrics per fer els càlculs més ràpids.

Tenim diferents tipus d'operadors bit a bit en el llenguatge de programació C. A continuació es mostra la llista dels operadors per bits:

matriu d'ordenació java
Operador Significat d'operador
& Operador AND bit a bit
| Operador OR per bits
^ Operador OR exclusiu per bits
~ Operador de complement a un (operador unari)
<< Operador de canvi a l'esquerra
>> Operador de canvi dret

Vegem la taula de veritat dels operadors per bits.

X I X&Y X|I 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

L'operador AND bit a bit es denota amb el signe únic (&). S'escriuen dos operands enters a banda i banda de l'operador (&). Si els bits corresponents dels dos operands són 1, aleshores la sortida de l'operació AND bit a bit és 1; en cas contrari, la sortida seria 0.

Per exemple,

 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 

Com podem observar a partir del resultat anterior, es comparen bits d'ambdues variables una per una. Si el bit de les dues variables és 1, la sortida seria 1, en cas contrari 0.

Entenem l'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; } 

Al codi anterior, hem creat dues variables, és a dir, 'a' i 'b'. Els valors de 'a' i 'b' són 6 i 14 respectivament. El valor binari de 'a' i 'b' són 0110 i 1110, respectivament. Quan apliquem l'operador AND entre aquestes dues variables,

a I b = 0110 i& 1110 = 0110

Sortida

Operador bit a bit en C

Operador OR bit a bit

L'operador OR bit a bit es representa amb un únic signe vertical (|). Dos operands enters s'escriuen a banda i banda del símbol (|). Si el valor de bit de qualsevol dels operands és 1, la sortida seria 1, en cas contrari 0.

Per exemple,

 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 

Com podem observar del resultat anterior que els bits dels dos operands es comparen un per un; si el valor de qualsevol dels bits és 1, la sortida seria 1 en cas contrari 0.

Entenem l'operador OR bit a bit mitjançant un programa.

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

Sortida

Operador bit a bit en C

Operador OR exclusiu per bits

L'operador OR exclusiu per bits es denota amb el símbol (^). S'escriuen dos operands a banda i banda de l'operador OR exclusiu. Si el bit corresponent de qualsevol dels operands és 1, la sortida seria 1, en cas contrari 0.

Per exemple,

 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 

Com podem observar del resultat anterior que els bits dels dos operands es comparen un per un; si el valor de bit corresponent de qualsevol dels operands és 1, la sortida seria 1 en cas contrari 0.

Entenem l'operador OR exclusiu per bits mitjançant 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; } 

Sortida

Operador bit a bit en C

Operador de complement bit a bit

L'operador de complement bit a bit també es coneix com a operador de complement d'un. Es representa amb el símbol tilde (~). Només pren un operand o variable i realitza una operació de complement en un operand. Quan apliquem l'operació del complement a qualsevol bit, aleshores 0 es converteix en 1 i 1 es converteix en 0.

Per exemple,

 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 

Com podem observar del resultat anterior que si el bit és 1, llavors es canvia a 0 sinó 1.

Entenem l'operador del complement a través d'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; } 

Sortida

Operador bit a bit en C

Operadors de desplaçament per bits

Existeixen dos tipus d'operadors de desplaçament per bits a la programació C. Els operadors de desplaçament per bits desplaçaran els bits al costat esquerre o al costat dret. Per tant, podem dir que l'operador de desplaçament de bits es divideix en dues categories:

  • Operador de desplaçament a l'esquerra
  • Operador de desplaçament a la dreta

Operador de desplaçament a l'esquerra

tallar la matriu java

És un operador que desplaça el nombre de bits cap a l'esquerra.

La sintaxi de l'operador de desplaçament a l'esquerra es mostra a continuació:

 Operand &lt;&lt; n 

On,

L'operand és una expressió entera a la qual apliquem l'operació de desplaçament a l'esquerra.

n és el nombre de bits a desplaçar.

En el cas de l'operador de desplaçament a l'esquerra, 'n' bits es desplaçaran al costat esquerre. Els 'n' bits del costat esquerre apareixeran i els 'n' bits del costat dret s'omplen amb 0.

Per exemple,

 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>

On,

L'operand és una expressió entera a la qual apliquem l'operació de desplaçament a la dreta.

N és el nombre de bits a desplaçar.

En el cas de l'operador de desplaçament a la dreta, 'n' bits es desplaçaran al costat dret. Els 'n' bits del costat dret apareixeran i els 'n' bits del costat esquerre s'omplen amb 0.

Per exemple,

 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 

Entenem-ho a través d'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; } 

Sortida

Operador bit a bit en C