C语言提供了六种位运算符:
&
按位与
|
按位或
^
按位异或
~
取反
<<
左移
>>
右移
12.1.1
按位与运算
按位与运算符
"&"
是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应
的两个二进位均为
1
时,结果位才为
1
,否则为
0
。参与运算的数以补码方式出现。
例如:
9&5
可写算式如下:
00001001
(9
的二进制补码
)
&00000101
(5
的二进制补码
)
00000001
(1
的二进制补码
)
可见
9&5=1
。
按位与运算通常用来对某些位清
0
或保留某些位。例如把
a
的高八位清
0
,保留低八位,
可作
a&255
运算
( 255
的二进制数为
0000000011111111)
。
【例
12.1
】
main(){
int a=9,b=5,c;
c=a&b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
12.1.2
按位或运算
按位或运算符“
|
”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对
应的二个二进位有一个为
1
时,结果位就为
1
。参与运算的两个数均以补码出现。
例如:
9|5
可写算式如下:
00001001
|00000101
00001101
(
十进制为
13)
可见
9|5=13
【例
12.2
】
main(){
int a=9,b=5,c;
c=a|b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
12.1.3
按位异或运算