Bitové operátory jsou operátory používané k provádění operací s daty na bitové úrovni. Když provádíme bitové operace, pak je to také známé jako programování na bitové úrovni. Skládá se ze dvou číslic, buď 0 nebo 1. Používá se hlavně v numerických výpočtech, aby byly výpočty rychlejší.
V programovacím jazyce C máme různé typy bitových operátorů. Následuje seznam bitových operátorů:
Operátor | Význam operátora |
---|---|
& | Bitový operátor AND |
| | Bitový operátor OR |
^ | Bitový exkluzivní operátor OR |
~ | Operátor jednoho doplňku (unární operátor) |
<< | Operátor levé směny |
>> | Operátor pravé směny |
Podívejme se na pravdivostní tabulku bitových operátorů.
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 ampersandem (&). Na obě strany operátoru (&) jsou zapsány dva celočíselné operandy. Pokud jsou odpovídající bity obou operandů 1, pak výstup bitové operace AND je 1; jinak by byl výstup 0.
Napří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&b, the output would be: Result = 0100
Jak můžeme z výše uvedeného výsledku pozorovat, bity obou proměnných jsou porovnávány jeden po druhém. Pokud je bit obou proměnných 1, výstup by byl 1, jinak 0.
Pojďme pochopit bitový operátor AND prostřednictvím programu.
#include int main() { int a=6, b=14; // variable declarations printf('The output of the Bitwise AND operator a&b is %d',a&b); return 0; }
Ve výše uvedeném kódu jsme vytvořili dvě proměnné, tj. 'a' a 'b'. Hodnoty 'a' a 'b' jsou 6 a 14. Binární hodnota 'a' a 'b' jsou 0110 a 1110, v tomto pořadí. Když mezi tyto dvě proměnné použijeme operátor AND,
a AND b = 0110 && 1110 = 0110
Výstup
Bitový operátor OR
Bitový operátor OR je reprezentován jedním svislým znaménkem (|). Na obě strany symbolu (|) jsou zapsány dva celočíselné operandy. Pokud je bitová hodnota kteréhokoli z operandů 1, pak by výstup byl 1, jinak 0.
Napří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
Jak můžeme z výše uvedeného výsledku pozorovat, bity obou operandů jsou porovnávány jeden po druhém; pokud je hodnota jednoho bitu 1, pak by výstup byl 1, jinak 0.
Pojďme pochopit bitový operátor OR prostřednictvím programu.
#include int main() int a=23,b=10; // variable declarations printf('The output of the Bitwise OR operator a
Výstup
ne
Bitový exkluzivní operátor OR
Bitový exkluzivní operátor OR je označen symbolem (^). Na obou stranách výhradního operátoru OR jsou zapsány dva operandy. Pokud je odpovídající bit kteréhokoli z operandů 1, výstup by byl 1, jinak 0.
Napří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
Jak můžeme z výše uvedeného výsledku pozorovat, bity obou operandů jsou porovnávány jeden po druhém; pokud je odpovídající bitová hodnota kteréhokoli z operandů 1, pak by výstup byl 1, jinak 0.
Pojďme pochopit bitový exkluzivní operátor OR prostřednictvím programu.
#include int main() { int a=12,b=10; // variable declarations printf('The output of the Bitwise exclusive OR operator a^b is %d',a^b); return 0; }
Výstup
Operátor bitového doplňku
Operátor bitového doplňku je také známý jako operátor doplňku. Je reprezentován symbolem tilda (~). Trvá pouze jeden operand nebo proměnná a provádí operaci doplňku na operandu. Když aplikujeme operaci doplňku na libovolné bity, pak 0 se stane 1 a 1 se stane 0.
Například,
If we have a variable named 'a', 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 můžeme z výše uvedeného výsledku pozorovat, pokud je bit 1, změní se na 0, jinak 1.
Pojďme pochopit operátor komplementu prostřednictvím programu.
#include int main() { int a=8; // variable declarations printf('The output of the Bitwise complement operator ~a is %d',~a); return 0; }
Výstup
Operátory bitového posunu
V programování v C existují dva typy operátorů bitového posunu. Operátory bitového posunu posouvají bity buď na levou nebo pravou stranu. Proto můžeme říci, že operátor bitového posunu je rozdělen do dvou kategorií:
- Operátor s levou směnou
- Operátor pravé směny
Operátor s levou směnou
Je to operátor, který posouvá počet bitů doleva.
Syntaxe operátoru levého posunu je uvedena níže:
Operand << n
Kde,
Operand je celočíselný výraz, na který aplikujeme operaci levého posunu.
n je počet bitů, které mají být posunuty.
V případě operátoru s levým posunem se bity 'n' posunou na levou stranu. Bity 'n' na levé straně budou vyskakované a bity 'n' na pravé straně jsou vyplněny 0.
Například,
Suppose we have a statement: int a = 5; The binary representation of 'a' is given below: a = 0101 If we want to left-shift the above representation by 2, then the statement would be: a << 2; 0101<<2 = 00010100 < pre> <p> <strong>Let's understand through a program.</strong> </p> <pre> #include int main() { int a=5; // variable initialization printf('The value of a<<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 >> 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, 'n' bits will be shifted on the right-side. The 'n' bits on the right-side will be popped out, and 'n' 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>>2; 0000 0111 >> 2 = 0000 0001 </pre> <p> <strong>Let's understand through a program.</strong> </p> <pre> #include int main() { int a=7; // variable initialization printf('The value of a>>2 is : %d ', a>>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 který aplikujeme operaci pravého posunu.
N je počet bitů, které mají být posunuty.
V případě operátoru posunu doprava se bity 'n' posunou na pravou stranu. Bity 'n' na pravé straně budou vyskakované a bity 'n' na levé straně jsou vyplněny 0.
Napří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>>2; 0000 0111 >> 2 = 0000 0001
Pojďme to pochopit pomocí programu.
#include int main() { int a=7; // variable initialization printf('The value of a>>2 is : %d ', a>>2); return 0; }
Výstup
2>2>