xor异或逻辑运算
2015-12-04 16:28
239 查看
简略记忆:同0异1
1.由于0^0=0 0^1=1 所以,0^任何数 = 任何数
2.由于1^0=1 1^1 =0所以,1^任何数 = 任何数取反
3.任何数^任何数 = 0;
4.用于将特定的位反转,如对10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。原因见(2)
5.通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。
例如 a= 10100001
b= 00000111
a=a^b; //a=10100110
//此步操作是将a b原值的相同位记录为0,不同位记录为1.
//并保存在a中,b值此步并没有发生变化
//由于1^任何数 = 任何数取反 0^任何数 = 任何数
b=b^a; //b=10100001
//a中用1表示原值中对应位不同的部分
//做异或操作是将b中与(原a)中相同的部分保留,与(原a)中不同的部分取反
//即将b编程原来的a
a=a^b //a=00000111
//由于此时的a表示异同,b表示原来的a
//同理第二部步可获得原b值,赋给a即可实现转换
6.异或运算的特点:a两次异或同一个数b(a=a^b^b)仍然为原值a。//参考(5)即可知。
7.异或是可交换的:a^b = b^a
1.由于0^0=0 0^1=1 所以,0^任何数 = 任何数
2.由于1^0=1 1^1 =0所以,1^任何数 = 任何数取反
3.任何数^任何数 = 0;
4.用于将特定的位反转,如对10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。原因见(2)
5.通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。
例如 a= 10100001
b= 00000111
a=a^b; //a=10100110
//此步操作是将a b原值的相同位记录为0,不同位记录为1.
//并保存在a中,b值此步并没有发生变化
//由于1^任何数 = 任何数取反 0^任何数 = 任何数
b=b^a; //b=10100001
//a中用1表示原值中对应位不同的部分
//做异或操作是将b中与(原a)中相同的部分保留,与(原a)中不同的部分取反
//即将b编程原来的a
a=a^b //a=00000111
//由于此时的a表示异同,b表示原来的a
//同理第二部步可获得原b值,赋给a即可实现转换
6.异或运算的特点:a两次异或同一个数b(a=a^b^b)仍然为原值a。//参考(5)即可知。
7.异或是可交换的:a^b = b^a
相关文章推荐
- c#中跨线程调用windows窗体控件
- 编辑距离与最长公共子序列总结
- Android开发周报:弹幕源码开放送
- Kmemleak检测工具介绍
- linux里的软件安装
- 2015.12 第一篇IT博
- C-041.局部变量跟全局变量的区别
- Object-C : Block的实现方式
- 2.4G/5G频段WLAN的模式、带宽、协商速率、加密方式
- 跨域的小小总结:js跨域及跨域的几种解决方法
- IOS版Unity的Google Analytics(分析)插件集成Admob管理库教程
- 通达OA服务器意外断电后数据库容易损坏的解决方案
- 黑马程序员--字节流
- Oracle中的部分查询
- 开始记录学习经历
- ios测试基础五: ios手机流量消耗
- 如何安装本地jar包到maven库
- 五、图标更换
- 自定义圆角imageview方案2
- Builder design pattern in java