与、或和异或在位运算中的应用

一、与 &

其功能是参与运算的两个数字对应的二进制位相与。只有对应的两个二进位均为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               
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值