位运算以及使用场景

& (与)

只有对应位的值都是 1 时结果才为 1, 否则即为 0

 | (或)

对应位中有一个为1则为1

^ (异或)

当对应位的值不同时,则为1, 否则为0

取反~

二进制的0变成1,1变成0

移位运算符

左移运算<<:左移之后,右边位补0。(无论正负数,右侧填一个零,相当于乘以2)

右移运算>>:右移之后,左边位补原最左位值(可能是0,可能是1)(相当于除以2)

右移运算>>>:右移之后,左边位补0。

(1)若是正数,则和>>一样,相当于除以2

(2)若是负数,则负数会变成整数,会从一个负数变成一个相对较大的正数;

应用场景

判断奇偶性

方式一:n%2==1表示n是一个奇数

方式二:n&1==1表示n是一个奇数

        举例:9&1 = 00001001 & 00000001 == 00000001,是一个奇数

        核心:判断二进制的最后一位是否为1

交换两个数

    方式一:

        int team = a;
        a = b;
        b = team;

    方式二:使用位运算可以不需要借助额外空间完成数值交换        

        a=a^b;//a=a^b
        b=a^b;//b=(a^b)^b=a^0=a
        a=a^b;//a=(a^b)^(a^b^b)=0^b=0

    其他方式:可以参考很多算法题平台中的经典算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值