位运算

Java中的按位操作符有四个,分别是:&(按位与)、|(按位或)、^(按位异或)、~(按位非)。

1、先来看按位与(&)


从结果可以清晰的看到,与的规则为:两位相与,若有一位为0,则结果为0,否则为1。

2、然后是按位或(|)

public class Main {

这样就得到了按位或的结果

3、接下来是按位异或


不同得1,相同得0

按位异或有一个有意思的用法,它可以不用第三方变量,交换两数的值,如下


这个是有依据的,这样来看,

第一步:temp1^=temp2,即temp1=temp1^temp2

第二步:temp2=temp2^temp1=temp2^(temp1^temp2),异或满足交换律,去括号后最后得到temp2=temp1

第三步:temp1=temp1^temp2=(temp1^temp2)^temp2=temp1^temp2^temp1=temp2

经过这三步,顺利交换了两变量的值。

这个方法告诉我们,可以在C++中这样实现swap函数


这里使用了传引用,当然你也可以用传指针的方式实现

4、最后是按位非(~)




应用:

1、1001个数中,只有一个是重复的,找出这个重复的数。

2、一堆数中,只有两个数出现了一次,其他都出现了两次,找出这两个数。

3、两个数中,一个数出现奇数次, 个出现偶数次,找出出现奇数次的数。





http://blog.csdn.net/alading2009/article/details/40450421

http://www.cnblogs.com/JhSonD/p/6374397.html


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容