As we discussed in the previous video, the numbers are stored in their binary representation in computers and every single digit 0 / 1 is called bit.
Most languages allow you to perform operations which are bitwise ( this statement will make much more sense when we look at the operator themselves ). It is a fast, primitive action directly supported by the processor, and is used to manipulate values for comparisons and calculations.
Bitwise AND :
Syntax :
A & B
Values for bit combinations
a b a & b
------------------------
0 0 0
0 1 0
1 0 0
1 1 1
In other words, a & b = 0
unless a = 1 and b = 1
.
What does A & B mean :
A & B implies a & b for all corresponding bits of A and B.
So, lets say,
A = 21 ( 10101 ) and B = 6 ( 110 )
A & B =
1 0 1 0 1
& 0 0 1 1 0
------------------
0 0 1 0 0 = 4.
Bitwise OR :
Syntax :
A | B
Values for bit combinations
a b a | b
------------------------
0 0 0
0 1 1
1 0 1
1 1 1
In other words, a | b = 1
unless a = 0 and b = 0
What does A | B mean :
A | B
implies a | b
for all corresponding bits of A and B.
So, lets say
A = 21 ( 10101 ) and B = 6 ( 110 )
A | B =
1 0 1 0 1
| 0 0 1 1 0
------------------
1 0 1 1 1 = 23.
Bitwise XOR :
Syntax :
A ^ B
Values for bit a, b :
a b a ^ b
------------------------
0 0 0
0 1 1
1 0 1
1 1 0
In other words, a ^ b = 1
when a and b are different.
What does A ^ B mean :
A ^ B implies a ^ b for all corresponding bits of A and B. So, lets say
A = 21 ( 10101 ) and B = 6 ( 110 )
A ^ B =
1 0 1 0 1
^ 0 0 1 1 0
------------------
1 0 0 1 1 = 19.
Bitwise NOT :
Syntax :
~A
Values for bit a :
a | ~a
-------|-------
0 | 1
1 | 0
Its the inverse of the bit.
What does ~A mean
~A implies inverting every single bit in A. So, lets say
A = 21 ( 10101 ) and A is a char ( 1 byte )
~A =
0 0 0 1 0 1 0 1
--------------------------
1 1 1 0 1 0 1 0 = -22 ( Sign bit is 1 ).