logo

Bitový operátor v C

Bitové operátory sú operátory používané na vykonávanie operácií s údajmi na bitovej úrovni. Keď vykonávame bitové operácie, potom je to tiež známe ako programovanie na úrovni bitov. Pozostáva z dvoch číslic, buď 0 alebo 1. Používa sa hlavne v numerických výpočtoch na urýchlenie výpočtov.

V programovacom jazyku C máme rôzne typy bitových operátorov. Nasleduje zoznam bitových operátorov:

Operátor Význam operátora
& Bitový operátor AND
| Bitový operátor OR
^ Bitový výhradný operátor OR
~ Operátor jedného doplnku (unárny operátor)
<< Operátor ľavej zmeny
>> Operátor pravej zmeny

Pozrime sa na pravdivostnú tabuľku bitových operátorov.

X A 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

Bitový operátor AND

Bitový operátor AND je označený jediným znakom ampersandu (&). Na oboch stranách operátora (&) sú zapísané dva celočíselné operandy. Ak sú zodpovedajúce bity oboch operandov 1, potom výstup bitovej operácie AND je 1; inak by bol výstup 0.

Napríklad,

 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 

Ako môžeme vidieť z vyššie uvedeného výsledku, bity oboch premenných sa porovnávajú jeden po druhom. Ak je bit oboch premenných 1, výstup by bol 1, inak 0.

Poďme pochopiť bitový operátor AND prostredníctvom programu.

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

Vo vyššie uvedenom kóde sme vytvorili dve premenné, t.j. 'a' a 'b'. Hodnoty „a“ ​​a „b“ sú 6 a 14. Binárne hodnoty 'a' a 'b' sú 0110 a 1110. Keď medzi tieto dve premenné použijeme operátor AND,

java break

a AND b = 0110 && 1110 = 0110

Výkon

Bitový operátor v C

Bitový operátor OR

Bitový operátor OR je reprezentovaný jedným zvislým znamienkom (|). Na oboch stranách symbolu (|) sú napísané dva celočíselné operandy. Ak je bitová hodnota ktoréhokoľvek z operandov 1, výstup bude 1, inak 0.

Napríklad,

 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 

Ako môžeme pozorovať z vyššie uvedeného výsledku, bity oboch operandov sa porovnávajú jeden po druhom; ak je hodnota jedného bitu 1, potom by výstup bol 1, inak by bol 0.

Poďme pochopiť bitový operátor OR prostredníctvom programu.

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

Výkon

Bitový operátor v C

Bitový výhradný operátor OR

Bitový exkluzívny operátor OR je označený symbolom (^). Dva operandy sú zapísané na oboch stranách výhradného operátora OR. Ak je zodpovedajúci bit ktoréhokoľvek z operandov 1, výstup bude 1, inak 0.

Napríklad,

 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 

Ako môžeme pozorovať z vyššie uvedeného výsledku, bity oboch operandov sa porovnávajú jeden po druhom; ak je zodpovedajúca bitová hodnota ktoréhokoľvek z operandov 1, potom by výstup bol 1, inak by bol 0.

Poďme pochopiť bitový exkluzívny operátor OR prostredníctvom programu.

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

Výkon

Bitový operátor v C

Operátor bitového doplnku

Operátor bitového doplnku je známy aj ako operátor doplnku. Je reprezentovaný symbolom tilda (~). Trvá len jeden operand alebo premenná a vykonáva operáciu doplnku na operande. Keď aplikujeme operáciu doplnku na ľubovoľné bity, potom sa 0 stane 1 a 1 sa stane 0.

Napríklad,

 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 

Ako môžeme pozorovať z vyššie uvedeného výsledku, ak je bit 1, potom sa zmení na 0, inak 1.

Poďme pochopiť operátor doplnku prostredníctvom programu.

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

Výkon

10 zo 40
Bitový operátor v C

Operátory bitového posunu

V programovaní C existujú dva typy operátorov bitového posunu. Operátory bitového posunu posunú bity buď na ľavú alebo pravú stranu. Preto môžeme povedať, že operátor bitového posunu je rozdelený do dvoch kategórií:

  • Operátor na ľavú smenu
  • Operátor pravého posunu

Operátor na ľavú smenu

Je to operátor, ktorý posúva počet bitov doľava.

Syntax operátora ľavého posunu je uvedená nižšie:

 Operand &lt;&lt; n 

Kde,

Operand je celočíselný výraz, na ktorý aplikujeme operáciu ľavého posunu.

n je počet bitov, ktoré sa majú posunúť.

V prípade operátora s ľavým posunom sa bity 'n' posunú na ľavú stranu. Bity 'n' na ľavej strane budú vysunuté a bity 'n' na pravej strane sú vyplnené 0.

Napríklad,

 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>

Kde,

Operand je celočíselný výraz, na ktorý aplikujeme operáciu posunu doprava.

N je počet bitov, ktoré sa majú posunúť.

V prípade operátora s posunom doprava sa bity „n“ posunú na pravú stranu. Bity 'n' na pravej strane budú vysunuté a bity 'n' na ľavej strane sú vyplnené 0.

textový wrapper css

Napríklad,

 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 

Poďme pochopiť prostredníctvom programu.

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

Výkon

Bitový operátor v C