OPERACIJE S BITOVIMA
C ima mogućnost direktnog manipuliranja
bitovima, a dozvoljene operacije su,
Operacije | Operator | Komentar | Vrijednost sume prije | Vrijednost sume poslije |
AND (log. I) | & | sum = sum & 2; | 4 | 0 |
OR (log. ILI) | | | sum = sum | 2; | 4 | 6 |
Exclusive OR (ekskluzivno ILI) | ^ | sum = sum ^ 2; | 4 | 6 |
1's Complement (komplement) | ~ | sum = ~sum; | 4 | -5 |
Left Shift (pomak ulijevo) | << | sum = sum << 2; | 4 | 16 |
Right Shift (pomak udesno) | >> | sum = sum >> 2; | 4 | 0 |
/* Primjer programa sa << and >> */ #include <stdio.h> main() { int n1 = 10, n2 = 20, i = 0; i = n2 << 4; /* n2 se pomiče ulijevo 4 puta */ printf("%d\n", i); i = n1 >> 5; /* n1 se pomiče udesno 5 puta */ printf("%d\n", i); } Ispis programa
320 0
/* Primjer programa koji koristi EOR operator */ #include <stdio.h> main() { int value1 = 2, value2 = 4; value1 ^= value2; value2 ^= value1; value1 ^= value2; printf("Value1 = %d, Value2 = %d\n", value1, value2); } Ispis programa Value1 = 4, Value2 = 2
/* Primjer programa koji koristi AND operator */ #include <stdio.h> main() { int loop; for( loop = 'a'; loop <= 'f'; loop++ ) printf("Loop = %c, AND 0xdf = %c\n", loop, loop & 0xdf); } Ispis programa Loop = a, AND 0xdf = A Loop = b, AND 0xdf = B Loop = c, AND 0xdf = C Loop = d, AND 0xdf = D Loop = e, AND 0xdf = E Loop = f, AND 0xdf = F