Bitwise operations

Basic types / Numbers / Integer

int a = 5; //0101
int b = 6; //0110

//And
int c1 = a & b;
//c1 is 4 (0100)

//Or
int c2 = a | b;
//c2 is 7 (0111)

//Xor
int c3 = a ^ b;
//c3 is 3 (0011)

//shift right
int c4 = a >> 1;
//c4 is 2 (0010)

//shift left
int c5 = b << 1;
//c5 is 12 (1100)

//bits inversion
int c6 = ~b;
//c6 is -7 (-111)

//the same inversion on an unsigned type
unsigned char c7 = (unsigned char)~b;
//c7 is 249 (11111001)

printf("c1 is %d\n", c1);
printf("c2 is %d\n", c2);
printf("c3 is %d\n", c3);
printf("c4 is %d\n", c4);
printf("c5 is %d\n", c5);
printf("c6 is %d\n", c6);
printf("c7 is %d\n", c7);