在标准C++中,位操作符包括:&(位与),|(位或),^(位异或),~(位非),<<(位左移),>>(位右移)。
下面将详解的加以说明:
一:&(位与)
位1 位2 位1&位2
0 0 0
0 1 0
1 0 0
1 1 1
例:
int main()
{
int c1,c2;
c1=0x45;
c2=0x71;
std::cout<<"Result of "<<hex<<c1<<" & "<<c2<<" = "<<(c1&c2)<<dec<<'/n';
}
该程序的输出结果是:Result of 45 & 71 = 41
这是因为:
c1=0x45 二进制 01000101
& c2=0x72 二进制 01110001
= 0x41 二进制 01000001
二:|(位或)
位1 位2 位1|位2
0 0 0
0 1 1
1 0 1
1 1 1
例:
i1=0x47 01000111
| i2=0x53 01010011
0x57 01010111
三:^(位异或)
位1 位2 位1^位2
0 0 0
0 1 1
1 0 1
1 1 0
例:
i1=0x47 01000111
^ i2=0x53 01010011
0x14 00010100
四:~(位非)
位 ~位2
0 1
1 0
例:
c=0x45 01000101
~c=0xBA 10111010
五:<<,>>(位左移,位右移)
c=0x1C 00011100
位左移操作:c<<1 -> c=0x38 00111000
位右移操作:c>>2 -> c=0x07 00000111
即:
位左移<<时,左移n位等价于乘以2的n次幂。
位右移<<时,右移n位等价于除以2的n次幂。
例如:
1:位左移
int i,j;
i=j<<3; //等价于:i=j*8;
2:位右移
int i,j;