8 Bitwise
8 Bitwise
Bitwise Structures
What is Bitwise Structure?
• 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.
▫ Total array of 64 bits.
What is Bitwise Structure?
• 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 Bitwise Structure?
• 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).
What is Bitwise Structure?
• 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).
Bitwise Operators
0 0 0 0 0 1
0 1 0 1 1 1
1 0 0 1 1 0
1 1 1 1 0 0
Bitwise Operators - Examples
11010011 11010011 11010011
& | ^
10001100 10001100 10001100
------------ ------------ ------------
10000000 11011111 01011111
lights: 00000000
lights: 00000100
Setting Bits
• For instance, how can we turn off the light in room #3?
lights: 00100111
lights: 00100111
char lights = 0x27;
char mask = 0x1;
mask <<= 2; mask: 00000001
if(lights & mask)
mask: 00000100
puts(“turned on”);
else
puts(“turned off”); lights & mask: 00000100
13