第一百八四章 异或运算


小说:编程之战   作者:程序小猿   类别:未来世界   加入书签   【章节错误/点此举报】   【更新慢了/点此举报
推荐阅读: 永恒剑主 | 星光灿烂 | 巨星夫妻 | 弑天刃 | 九重神格 | 超警美利坚 | 步步惊唐 | 绝世天君 | 都市幻界 | 异度
笔趣阁 //www.boquge.com/book/105094/ 为您提供编程之战全文阅读!注册本站用户,获取免费书架,追书更方便!
  其实,杨成刚才就在思考这个问题了。
  有没有更好的方法来进行数据保存和恢复?
  答案是肯定有的。
  可以使用XOR(异或运算)来做奇偶验证!
  一个简单的应用会像是这样:
  首先,把硬盘上的数据分割成几份相同大小的数据块。
  假设原始数据是这样:
  [0,0,0,1,1,1,1,0,0,1,0,0,1,0,1,0]
  我们从中间劈开成2块,分别命名为A和B:
  A:[0,0,0,1,1,1,1,0]
  B:[0,1,0,0,1,0,1,0]
  然后,创建一个备份盘C,用来存储奇偶信息。
  接着,对A和B的每一个相同位置,作异或运算。
  A[0]=0,B[0]=0,异或得0,存入C[0]
  A[1]=0,B[1]=1,异或得1,存入C[1]
  A[2]=0,B[2]=0,异或得0,存入C[2]
  ......
  一趟遍历下来,备份盘C被填充满信息,得到:
  C:[0,1,0,1,0,1,0,0]
  这么做有什么好处呢?
  一旦保存原始数据的A盘或者B盘损坏,可以通过C盘重新计算异或来恢复。
  假设A盘数据丢失了,我们对B和C的每一个相同位置,作异或运算。
  这样就能还原出A盘数据。
  另外,可以观察到一个有趣的现象:
  和镜像保存所需的空间相比,这种方式得到的C盘空间是不是只有一半?
  空间效率大大提高了!
  嗯,就是这种了,得跟项目经理好好谈谈。