Bitni operatori su operatori koji se koriste za izvođenje operacija nad podacima na bitnoj razini. Kada izvodimo bitne operacije, to je također poznato kao programiranje na razini bitova. Sastoji se od dvije znamenke, 0 ili 1. Uglavnom se koristi u numeričkim izračunima kako bi izračuni bili brži.
U programskom jeziku C imamo različite vrste bitovnih operatora. Slijedi popis bitovnih operatora:
Operater | Značenje operatora |
---|---|
i | Operator AND po bitovima |
| | Operator ILI po bitovima |
^ | Ekskluzivni operator OR po bitovima |
~ | Jedan operator komplementa (unarni operator) |
<< | Operater lijevog pomaka |
>> | Operator desnog pomaka |
Pogledajmo tablicu istine bitovnih operatora.
x | I | 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 |
Operator AND po bitovima
Operator AND po bitovima označava se jednim znakom ampersand (&). Dva cjelobrojna operanda napisana su s obje strane (&) operatora. Ako su odgovarajući bitovi oba operanda 1, tada je izlaz operacije AND po bitovima 1; inače bi izlaz bio 0.
Na primjer,
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
Kao što možemo vidjeti iz gornjeg rezultata da se bitovi obje varijable uspoređuju jedan po jedan. Ako je bit obje varijable 1 tada bi izlaz bio 1, inače 0.
Razumimo bit-wise operator AND kroz program.
repl u Javi
#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; }
U gornjem kodu stvorili smo dvije varijable, tj. 'a' i 'b'. Vrijednosti 'a' i 'b' su 6 odnosno 14. Binarna vrijednost 'a' i 'b' je 0110 odnosno 1110. Kada primijenimo operator AND između ove dvije varijable,
a I b = 0110 && 1110 = 0110
Izlaz
Operator ILI po bitovima
Operator ILI po bitovima predstavljen je jednim okomitim znakom (|). Dva cjelobrojna operanda napisana su s obje strane simbola (|). Ako je vrijednost bita bilo kojeg od operanda 1, tada bi izlaz bio 1, inače 0.
Na primjer,
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
Kao što možemo primijetiti iz gornjeg rezultata da se bitovi oba operanda uspoređuju jedan po jedan; ako je vrijednost bilo kojeg bita 1, tada bi izlaz bio 1 inače 0.
Hajdemo razumjeti bit-wise OR operator kroz program.
#include int main() int a=23,b=10; // variable declarations printf('The output of the Bitwise OR operator a
Izlaz
Ekskluzivni operator OR po bitovima
Bitno isključivi ILI operator označen je simbolom (^). Dva operanda su napisana s obje strane operatora isključivog ILI. Ako je odgovarajući bit bilo kojeg od operanda 1 tada bi izlaz bio 1, inače 0.
Na primjer,
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
Kao što možemo primijetiti iz gornjeg rezultata da se bitovi oba operanda uspoređuju jedan po jedan; ako je odgovarajuća vrijednost bita bilo kojeg od operanda 1, tada bi izlaz bio 1 inače 0.
Hajdemo razumjeti bit-wise ekskluzivni OR operator kroz program.
#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; }
Izlaz
Operator bitne komplementacije
Operator komplementa po bitovima također je poznat kao operator komplementa jedan. Predstavlja se simbolom tilda (~). Uzima samo jedan operand ili varijablu i izvodi komplementarnu operaciju na operandu. Kada primijenimo operaciju komplementa na bilo koji bit, tada 0 postaje 1, a 1 postaje 0.
Na primjer,
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
Kao što možemo primijetiti iz gornjeg rezultata da ako je bit 1, onda se mijenja u 0 inače 1.
Razumimo operator komplementa kroz program.
#include int main() { int a=8; // variable declarations printf('The output of the Bitwise complement operator ~a is %d',~a); return 0; }
Izlaz
Operatori pomaka po bitovima
U C programiranju postoje dvije vrste operatora bit-wise shift. Operatori pomaka po bitovima će pomaknuti bitove na lijevu ili desnu stranu. Stoga možemo reći da je operator bit-wise shift podijeljen u dvije kategorije:
- Operator lijevog pomaka
- Operator desnog pomaka
Operator lijevog pomaka
To je operator koji pomiče broj bitova ulijevo.
Sintaksa operatora lijevog pomaka data je u nastavku:
Operand << n
Gdje,
Operand je cjelobrojni izraz na koji primjenjujemo operaciju lijevog pomaka.
n je broj bitova koje treba pomaknuti.
U slučaju operatora pomaka ulijevo, 'n' bitova bit će pomaknuto ulijevo. 'N' bitova na lijevoj strani će iskočiti, a 'n' bitova na desnoj strani popunjeno je s 0.
Na primjer,
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>
Gdje,
Operand je cjelobrojni izraz na koji primjenjujemo operaciju desnog pomaka.
N je broj bitova koje treba pomaknuti.
concat java niz
U slučaju operatora desnog pomaka, 'n' bitova bit će pomaknuto na desnoj strani. 'N' bitova na desnoj strani će iskočiti, a 'n' bitova na lijevoj strani popunjeno je 0.
Na primjer,
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
Shvatimo kroz program.
#include int main() { int a=7; // variable initialization printf('The value of a>>2 is : %d ', a>>2); return 0; }
Izlaz
2>2>