logo

Operator bitowy w C

Operatory bitowe to operatory używane do wykonywania operacji na danych na poziomie bitu. Kiedy wykonujemy operacje bitowe, nazywa się to również programowaniem na poziomie bitowym. Składa się z dwóch cyfr, 0 lub 1. Jest używany głównie w obliczeniach numerycznych, aby przyspieszyć obliczenia.

W języku programowania C mamy różne typy operatorów bitowych. Poniżej znajduje się lista operatorów bitowych:

Operator Znaczenie operatora
& Bitowy operator AND
| Bitowy operator OR
^ Bitowy wyłączny operator OR
~ Operator uzupełnienia jednostkowego (operator jednoargumentowy)
<< Operator zmiany w lewo
>> Operator zmiany prawej

Przyjrzyjmy się tabeli prawdy operatorów bitowych.

X I X i 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

Bitowy operator AND

Bitowy operator AND jest oznaczony pojedynczym znakiem ampersand (&). Po obu stronach operatora (&) zapisano dwa operandy całkowite. Jeśli odpowiednie bity obu operandów mają wartość 1, wówczas wynikiem bitowej operacji AND jest wartość 1; w przeciwnym razie wynik będzie wynosił 0.

Na przykład,

 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 

Jak widać z powyższego wyniku, bity obu zmiennych są porównywane jeden po drugim. Jeśli bit obu zmiennych wynosi 1, wówczas wynikiem będzie 1, w przeciwnym razie 0.

Przyjrzyjmy się operatorowi bitowemu AND w programie.

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

W powyższym kodzie utworzyliśmy dwie zmienne, tj. „a” i „b”. Wartości „a” i „b” wynoszą odpowiednio 6 i 14. Wartości binarne „a” i „b” to odpowiednio 0110 i 1110. Kiedy zastosujemy operator AND pomiędzy tymi dwiema zmiennymi,

a ORAZ b = 0110 && 1110 = 0110

zamiennik Java

Wyjście

Operator bitowy w C

Bitowy operator OR

Bitowy operator OR jest reprezentowany przez pojedynczy znak pionowy (|). Po obu stronach symbolu (|) zapisane są dwa operandy całkowite. Jeśli wartość bitowa dowolnego operandu wynosi 1, wówczas wynikiem będzie 1, w przeciwnym razie 0.

Na przykład,

 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 

Jak możemy zaobserwować z powyższego wyniku, bity obu operandów są porównywane jeden po drugim; jeśli wartość któregokolwiek bitu wynosi 1, wówczas wynikiem będzie 1, w przeciwnym razie 0.

Przyjrzyjmy się bitowemu operatorowi OR w programie.

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

Wyjście

Operator bitowy w C

Bitowy wyłączny operator OR

Bitowy operator wyłączności OR jest oznaczony symbolem (^). Po obu stronach wyłącznego operatora OR zapisano dwa operandy. Jeśli odpowiedni bit dowolnego operandu ma wartość 1, wówczas wynikiem będzie 1, w przeciwnym razie 0.

Na przykład,

 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 

Jak możemy zaobserwować z powyższego wyniku, bity obu operandów są porównywane jeden po drugim; jeśli odpowiadająca wartość bitowa dowolnego operandu wynosi 1, wówczas wynikiem będzie 1, w przeciwnym razie 0.

Przyjrzyjmy się bitowemu wyłącznemu operatorowi OR w programie.

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

Wyjście

Operator bitowy w C

Operator dopełnienia bitowego

Operator dopełnienia bitowego jest również znany jako operator dopełnienia. Jest reprezentowany przez symbol tyldy (~). Pobiera tylko jeden operand lub zmienną i wykonuje na nim operację dopełnienia. Kiedy zastosujemy operację dopełnienia na dowolnych bitach, wówczas 0 stanie się 1, a 1 stanie się 0.

Na przykład,

 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 

Jak możemy zaobserwować z powyższego wyniku, jeśli bit ma wartość 1, wówczas zostaje zmieniony na 0, w przeciwnym razie 1.

Rozumiemy operator dopełnienia poprzez program.

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

Wyjście

Operator bitowy w C

Operatory przesunięcia bitowego

W programowaniu C istnieją dwa typy operatorów przesunięcia bitowego. Operatory przesunięcia bitowego przesuwają bity w lewą lub prawą stronę. Dlatego możemy powiedzieć, że operator przesunięcia bitowego dzieli się na dwie kategorie:

  • Operator z lewą zmianą
  • Operator z przesunięciem w prawo

Operator z lewą zmianą

złączenia i rodzaje złączy

Jest to operator przesuwający liczbę bitów w lewą stronę.

Poniżej podano składnię operatora lewego przesunięcia:

 Operand &lt;&lt; n 

Gdzie,

Operand jest wyrażeniem całkowitym, w przypadku którego stosujemy operację lewego przesunięcia.

n jest liczbą bitów do przesunięcia.

W przypadku operatora przesunięcia w lewo „n” bitów zostanie przesuniętych w lewą stronę. „N” bitów po lewej stronie zostanie wysuniętych, a „n” bitów po prawej stronie zostanie wypełnione wartością 0.

Na przykład,

 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>

Gdzie,

Operand jest wyrażeniem całkowitym, w stosunku do którego stosujemy operację przesunięcia w prawo.

N to liczba bitów do przesunięcia.

W przypadku operatora przesunięcia w prawo „n” bitów zostanie przesuniętych w prawą stronę. „N” bitów po prawej stronie zostanie wysuniętych, a „n” bitów po lewej stronie zostanie wypełnione wartością 0.

Na przykład,

 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 

Rozumiemy się poprzez program.

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

Wyjście

Operator bitowy w C