a = 5, b = 9
a&b = 1
a|b = 13
a^b = 12
~a = 250
b<<1 = 18
b>>1 = 4
#include <iostream>
using namespace std;
int main() {
// Bitwise and & , bitwise or | , bitwise XOR ^
// (10)10=(1010)2 ,(15)10=(1111)2
int x = 10 & 15; // 1010
int y = 10 | 15; // 1111
int z = 10 ^ 15; // 0101
cout << x <<endl;
cout << y <<endl;
cout << z <<endl;
/* and & , or | , XOR ^
00 0 00 0 00 0
01 0 01 1 01 1
10 0 10 1 10 1
11 1 11 1 11 0 */
}
bitwise complement of N = ~N (represented in 2's complement form)
2'complement of ~N= -(~(~N)+1) = -(N+1)
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bitwise XOR Operation of 12 and 25
00001100
^ 00011001
________
00010101 = 21 (In decimal)
#include <stdio.h>
int main()
{
printf("Output = %d
",~35);
printf("Output = %d
",~-12);
return 0;
}
// C Program to demonstrate use of bitwise operators
#include <stdio.h>
int main()
{
// a = 5(00000101), b = 9(00001001)
unsigned char a = 5, b = 9;
// The result is 00000001
printf("a = %d, b = %d
", a, b);
printf("a&b = %d
", a & b);
// The result is 00001101
printf("a|b = %d
", a | b);
// The result is 00001100
printf("a^b = %d
", a ^ b);
// The result is 11111010
printf("~a = %d
", a = ~a);
// The result is 00010010
printf("b<<1 = %d
", b << 1);
// The result is 00000100
printf("b>>1 = %d
", b >> 1);
return 0;
}
Decimal Binary 2's complement
0 00000000 -(11111111+1) = -00000000 = -0(decimal)
1 00000001 -(11111110+1) = -11111111 = -256(decimal)
12 00001100 -(11110011+1) = -11110100 = -244(decimal)
220 11011100 -(00100011+1) = -00100100 = -36(decimal)
Note: Overflow is ignored while computing 2's complement.
#include <stdio.h>
int main()
{
int a = 12, b = 25;
printf("Output = %d", a&b);
return 0;
}
12 = 00001100 (In Binary)
25 = 00011001 (In Binary)
Bit Operation of 12 and 25
00001100
& 00011001
________
00001000 = 8 (In decimal)