logo

Operador bit a bit em C

Os operadores bit a bit são os operadores usados ​​para realizar as operações nos dados em nível de bit. Quando realizamos operações bit a bit, isso também é conhecido como programação em nível de bit. Consiste em dois dígitos, 0 ou 1. É usado principalmente em cálculos numéricos para tornar os cálculos mais rápidos.

Temos diferentes tipos de operadores bit a bit na linguagem de programação C. A seguir está a lista dos 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 de um (operador unário)
<< Operador de deslocamento à esquerda
>> Operador de deslocamento para a direita

Vejamos a tabela verdade dos operadores bit a bit.

X E X e 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

O operador AND bit a bit é indicado pelo sinal de e comercial único (&). Dois operandos inteiros são escritos em ambos os lados do operador (&). Se os bits correspondentes de ambos os operandos forem 1, então a saída da operação AND bit a bit será 1; caso contrário, a saída seria 0.

Por exemplo,

 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 no resultado acima, os bits de ambas as variáveis ​​​​são comparados um por um. Se o bit de ambas as variáveis ​​for 1, a saída será 1, caso contrário, 0.

Vamos entender o operador AND bit a bit por meio do programa.

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

No código acima, criamos duas variáveis, ou seja, 'a' e 'b'. Os valores de 'a' e 'b' são 6 e 14 respectivamente. Os valores binários de 'a' e 'b' são 0110 e 1110, respectivamente. Quando aplicamos o operador AND entre essas duas variáveis,

aE b = 0110 && 1110 = 0110

Saída

Operador bit a bit em C

Operador OR bit a bit

O operador OR bit a bit é representado por um único sinal vertical (|). Dois operandos inteiros são escritos em ambos os lados do símbolo (|). Se o valor do bit de qualquer operando for 1, a saída será 1, caso contrário, 0.

Por exemplo,

 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 pelo resultado acima que os bits de ambos os operandos são comparados um por um; se o valor de qualquer um dos bits for 1, a saída será 1, caso contrário, 0.

Vamos entender o operador OR bit a bit por meio de um programa.

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

Saída

Operador bit a bit em C

Operador OR exclusivo bit a bit

O operador OR exclusivo bit a bit é indicado pelo símbolo (^). Dois operandos são escritos em ambos os lados do operador OR exclusivo. Se o bit correspondente de qualquer operando for 1, a saída será 1, caso contrário, 0.

Por exemplo,

 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 pelo resultado acima que os bits de ambos os operandos são comparados um por um; se o valor do bit correspondente de qualquer operando for 1, a saída será 1, caso contrário, 0.

Vamos entender o operador OR exclusivo bit a bit por meio de um 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; } 

Saída

Operador bit a bit em C

Operador de complemento bit a bit

O operador de complemento bit a bit também é conhecido como operador de complemento. É representado pelo símbolo til (~). Leva apenas um operando ou variável e executa a operação complementar em um operando. Quando aplicamos a operação de complemento em qualquer bit, 0 torna-se 1 e 1 torna-se 0.

Por exemplo,

 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 pelo resultado acima, se o bit for 1, ele será alterado para 0, caso contrário, 1.

Vamos entender o operador complemento através de um 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; } 

Saída

Operador bit a bit em C

Operadores de mudança bit a bit

Existem dois tipos de operadores de deslocamento bit a bit na programação C. Os operadores de deslocamento bit a bit deslocarão os bits do lado esquerdo ou do lado direito. Portanto, podemos dizer que o operador de deslocamento bit a bit é dividido em duas categorias:

  • Operador de deslocamento à esquerda
  • Operador de deslocamento para a direita

Operador de deslocamento à esquerda

É um operador que desloca o número de bits para o lado esquerdo.

A sintaxe do operador left-shift é fornecida abaixo:

 Operand &lt;&lt; n 

Onde,

Operando é uma expressão inteira na qual aplicamos a operação de deslocamento para a esquerda.

n é o número de bits a serem deslocados.

No caso do operador Left-shift, 'n' bits serão deslocados para o lado esquerdo. Os 'n' bits do lado esquerdo serão exibidos e os 'n' bits do lado direito serão preenchidos com 0.

Por exemplo,

 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>

Onde,

Operando é uma expressão inteira na qual aplicamos a operação de deslocamento para a direita.

N é o número de bits a serem deslocados.

leitura de arquivo csv em java

No caso do operador de deslocamento para a direita, 'n' bits serão deslocados para o lado direito. Os 'n' bits do lado direito serão exibidos e os 'n' bits do lado esquerdo serão preenchidos com 0.

Por exemplo,

 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 

Vamos entender através de um 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; } 

Saída

Operador bit a bit em C