位运算

一:&(按位与)

1:i&1

int main()
{
    for(int i=0;i<=20;++i){
        if(i&1)
            printf("ans  =  %d\n",i);
    }
    return 0;
}

运行结果:

2:i&2

int main()
{
    for(int i=0;i<=20;++i){
        if(i&2)
            printf("ans  =  %d\n",i);
    }
    return 0;
}

运行结果:

&运算:只要答案中二进制不是所有位都为0则答案不为0

二:|(按位或)

i | x,只有i或x其中一个为0时,答案才为0

 

三:^(异或)

他的规则是:若参加运算的两个二进制位值相同则为0,否则为1
即0∧0=0,0∧1=1,1∧0=1, 1∧1=0

 

四:~(取反)

他是一元运算符,用于求整数的二进制反码,即分别将操作数各二进制位上的1变为0,0变为1。

 

五:<<(左移)

左移运算符是用来将一个数的各二进制位左移若干位,移动的位数由右操作数指定(右操作数必须是非负

值),其右边空出的位用0填补,高位左移溢出则舍弃该高位。

左移1位相当于该数乘以2,左移2位相当于该数乘以2*2=4,15<<2=60,即乘了4。但此结论只适用于该

数左移时被溢出舍弃的高位中不包含1的情况。

 

六:>>(右移)

对于无符号数n,每右移一位相当于除以2

eg:n = n>>3 等价于 n = n/2/2/2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值