一、与 &
其功能是参与运算的两个数字对应的二进制位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。
按位与运算通常用来对某些位清0或保留某些位。
应用:
(1)清0特定位(mask中特定位置0,其他位为1,s=s&mask)。
(2)取某数中指定位(mask中特定位置1,其他位为0,s=s&mask)。
例 利用与将某数的二进制输出
程序主体如下:
int src[100];
int num;
int i;
for(i = 0; i < 32; i++)
{
if((unsigned)(0x8000000) == (unsigned)(num & 0x80000000))
{
src[i] = 1;
}
else
{
src[i] = 0;
}
num = num << 1 //num的二进制数往左移一位
}
二、或 |
其功能是参与运算的两个数字对应的二进制位相或。只要对应的两个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。
应用:常用来将源操作数某些位置1,其他位不变(mask中特定位置1,其他位为0,s=s|mask)。
三、异或 ^
其功能是参与运算的两个数字对应的二进制位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现。
应用:
(1)使特定位的值取反(mask中特定位置1,其他位为0,s=s^mask)。
(2)不引入第三变量,交换两个变量的值(设a=a1,b=b1)。
a=a^b
b=a^b
a=a^b