用&和~实现^

  首先,&符号使各位同为1的变为1,其余全为0,~符号使各位1变0,0变1,^符号使各位相同的变为0,不同的变为1,也可视为二进制下的无进位相加。

  用&和~,求x^y;

  这时注意到,xy&可以使相同的1保留,若~x&~y可以使相同的0保留,此时可知x,y中所有相同位数,只需把这些位数变为0,再把剩余位数变为1,即达到^效果。

  这时怎么把两者结合呢,在不用|符号下,只用&和~,这时注意到,对x&y取~,即~(x&y)使x,y中不同为1的位变为1,同为1的位变为0。而在~(~x&~y)中,同为0的位变为0,其余变为1。这时注意到,~(x&y)&~(~x&~y)保留下不同为0或同为1的数,即达到^的效果了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值