异或运算应用
来源:互联网 发布:vb浏览文件夹选择txt 编辑:程序博客网 时间:2024/04/30 14:50
异或:xor
异或运算规则:
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
异或运算特性:
1). a xor a = 0
2). a xor 0 = a
3). (a xor b) xor c = a xor (b xor c)
4). IF a xor b = c THEN a xor c = b
异或的运算特性有两点很好的应用
查找
case 1:
一个数组,除了其中一个元素,其他元素都为空,如何找到这个元素?
对数组所有元素做异或的结果即为这个元素
利用了异或运算特性的1)、2)、3)
异或运算规则:
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0
异或运算特性:
1). a xor a = 0
2). a xor 0 = a
3). (a xor b) xor c = a xor (b xor c)
4). IF a xor b = c THEN a xor c = b
异或的运算特性有两点很好的应用
查找
case 1:
一个数组,除了其中一个元素,其他元素都为空,如何找到这个元素?
对数组所有元素做异或的结果即为这个元素
利用了异或运算特性的1)、2)、3)
case 2:
给一个很大的数组,里面有两个数只出现过一次,其他数都出现过两次,把这两个数找出来?
这个case复杂一些,有兴趣的同学可以参考:一个百度的面试题目
校验&恢复
校验&恢复主要利用的了异或的第四条特性:IF a xor b = c THEN a xor c = b
一个很好的应用实例是RAID5
简单描述下:
使用3块磁盘(A、B、C)组成RAID5阵列,当用户写数据时,将数据分成两部分,分别写到磁盘A和磁盘B
A xor B的结果写到磁盘C
当读取A的数据时,通过B xor C可以对A的数据做校验
当A盘出错时,通过B xor C也可以恢复A盘的数据
RAID5的实现比上述的描述复杂多了,有兴趣的同学看下RAID5
- 异或运算应用
- 异或运算应用
- 异或运算及其应用
- 异或运算及其应用
- 异或运算及其应用
- 异或运算及其应用
- 异或运算及其应用
- 异或^运算的应用
- 异或运算及其应用
- 异或运算详解及经典应用
- 异或运算符的巧妙应用
- FEC之异或运算应用
- 异或运算符的应用
- 异或运算规则及其应用
- HDU4801DP,异或运算,与运算,hash的应用
- 与运算与异或运算的应用
- 与、或和异或在位运算中的应用
- 异或运算、与运算、或运算在设计复选框中的应用
- 容器vector的函数
- java poi 打开 excel 文件 保留格式 修改内容 另存为新文件
- 转:c# 根据当前时间获取,本周,本月,本季度,月初,月末,各个时间段
- 常用正则表达式大全!(例如:匹配中文、匹配html)
- maven中的 dependencies 和 dependencyManagement 的区别
- 异或运算应用
- java.util.ArrayList size()
- 自动视频跟踪系统的解决方案
- 抽奖系统可用的随机生成器
- 2014年华为上机题及代码
- JUnit简介 and Assert
- Unicode 汉字内码表 (密码表)
- 'UITextAlignmentRight' is deprecated: first deprecated in ios6.0
- XMPP关键概念