#include int main(int argc, char* argv[]){ // & bitovsko i // 74 --- 01001010 = 2^6 + 2^3 + 2^1 = 64+8+2 // 87 --- 01010111 = 2^6 + 2^4 + 2^2 + 2^1 + 2^0 = 64 + 16 + 4 + 2 + 1 // & ------------ // 66 --- 01000010 // efikasnije je kada se konstante zapisuju heksadekadno // 74 = 0x4A (4 = 0100, A = 1010) // 87 = 0x57 (5 = 0101, 7 = 0111) // 66 = 0x42 (4 = 0100, 2 = 0010) // | bitovsko ili // 74 --- 01001010 // 87 --- 01010111 // | ------------ // 01011111 // 0x5F (koji je to broj dekadno?) // ^ bitovsko ekskluzivno ili, // vrednost ^ dva bita je 1 akko su razliciti, inace je 0 // 0^1 = 1, 1^0 = 1, 0^0 = 0, 1^1 = 0 // 74 --- 01001010 // 87 --- 01010111 // ^ ------------ // 00011101 // 0x1D // ~ jedinicni komplement // invertuje sve bitove argumenta i vraca kao povratnu vrednost, // dok ne pravi izmene nad originalnim argumentom // 74 --- 01001010 // ~ // 10110101 // 0xB5 // << pomeranje ulevo, siftovanje // bitovi prvog argumenta se pomeraju ulevo za broj pozicija koji je naveden // kao drugi argument (argumenti se ne menjaju) // pocetni bitovi se zanemaruju, sa desne strane se bitovi popunjavaju nulama // << 1 odgovara mnozenju sa 2 // 0x55 = 85 = 01010101 // 0x55 << 1 = 10101010 = 0xAA = 170 // >> pomeranje udesno, siftovanje // bitovi prvog argumenta su pomereni udesno za broj pozicija koji je drugi // argument // krajnji bitovi se zanemaruju a pocetni bitovi zavise od tipa vrednosti x // x >> n // LOGICKO POMERANJE // x - neoznacen ili oznacen sa nenegativnom vrednoscu // onda se pocetni bitovi popunjavaju nulama // x >> n = x div 2^n (celobrojno deljenje) // unsigned char x = 0x94 = 148 = 10010100 // x >> 1 = 01001010 = 0x4A = 74 // ARITMETICKO POMERANJE // ako je x oznacen tip sa negativnom vrednoscu, nije propisano standardom // ali vecina kompilatora pocetnih n bitova popunjava pocetnim bitom // vrednosti x // bitovske dodele // &=, |=, ^=, <<=, >>= // a &= 1 isto kao a = a&1 // prioritet operatora je jasno odredjen, bolje koristiti zagrade // naveden je u skripti ili google // bitovski operatori i logicki operatori su razliciti!!! // 1 && 2 = 1 logicki, tacno i tacno je tacno // 1 & 2 = 00000001 & 00000010 = 0 return 0; }