Bitwise Operators
Dr. Lavika Goel
MNIT Jaipur
What is BitwiseStructure?
• The smallest type is of 8 bits (char).
• Sometimes we need only a single bit.
• For instance, storing the status of the lights
in 8 rooms:
• We need to define an array of at least 8
chars. If the light of room 3 is turned on
the value of the third char is 1, otherwise
0.
What is BitwiseStructure?
• It is better to define only 8 bits since a bit can also store the
values 0 or 1.
• But the problem is that there is no C type which is 1 bit long
(char is the longer with 1 byte).
• Solution: define a char (8 bits) but refer to each bit separately.
• Bitwise operators, introduced by the C language, provide
one of its more powerful tools for using and manipulating
memory. They give the language the real power of a “low-
level language”.
What is BitwiseStructure?
• Accessing bits directly is fast and efficient,
especially if you are writing a real-time
application.
• A single bit cannot be accessed
directly, since it has no address of
its own.
• The language introduces the bitwise
operators, which help in manipulating a
single bit of a byte.
• bitwise operators may be used on integral
types only (unsigned types are preferable).
4
Bitwise Operators
& bitwise AND
| bitwise OR
^ bitwise XOR
~ 1’s complement
<< Shift left
>> Shift right
All these operators can be suffixed with =
For instance a &= b; is the same as
a = a & b;
5
Bitwise Operators – truth table
a b a&b a|b a^b ~a
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0
6
Bitwise Operators -Examples
7
Setting Bits
• How can we set a bit on or off?
• Manipulations on bits are enabled by mask
and bitwise operators.
• Bitwise OR of anything with 1 results in 1.
• Bitwise AND of anything with 0 results in 0.
Setting Bits
• For instance, how can we turn on the
light in room #3?
Setting Bits
• For instance, how can we turn off the
light in room #3?
Getting Bits
• How can we know if a bit is on or off?
• Manipulations on bits are enabled
by mask and bitwise operators.
• Bitwise AND of anything with 1
results in the same value.
Getting Bits
• For instance, how can we check if the
light in room #3 is turned on or off?
Bitwise Operations
• Why use them?
• A single bit shift left is a very fast way of
integer multiplication by 2.
• A single bit shift right is a very fact way of
integer division by 2.
• An AND operation with all zeros is a very
efficient way to clear out a field.
• We can use single bits in a word (32 bits) to
represent Boolean values very efficiently.
These are sometimes call flags.
End