Everyone must be familiar with AND(&&), OR(||)
and NOT(!) operators in C. well there are also bitwise logical operators also
known as AND(&), OR(|), EX-OR(^), Inverter(~), shift right(>>) and
shift left(<<).
These bit wise operators are widely used in embedded
systems and control.
Bit wise logic operators for C
A
|
B
|
A & B
|
A | B
|
A ^ B
|
Y = ~B
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
1
|
0
|
1
|
0
|
0
|
1
|
1
|
|
1
|
1
|
1
|
1
|
0
|
|
Used as:
ANDing
0x35 & 0x45 = 0x05
ORing
0x35 | 0x45 = 0x75
XORing
0x35 ^ 0x45 = 0x70
INVERTing
~0x35 = 0xCA
Usage of bit wise shift operation:
Data>>number of bits to be shifted right
Data<<number of bits to be shifted left
0x50>>4 = 0x05
0x45<<2 = 0xB4
An example of logic operation can be seen below.
#include<reg51.h>
/*
* issue ascii char to P2 as follows
* P3.1 P3.0
* 0 0 send 0
* 0 1 send 1
* 1 0 send 2
* 1 1 send 3
*
*/
void main()
{
unsigned
char z;
z
= P1; //read P1
z
= z & 0x03;
//
mask the unused bits
switch(z)
{
case(0):
P2 = '0';
break;
case(1):
P2 = '1';
break;
case(2):
P2 = '2';
break;
case(3):
P2 = '3';
break;
}//
end of switch
}// end of main
// end of program
|
No comments:
Post a Comment