笔趣阁 > 科幻小说 > 编程之战 > 章节目录 第一百八四章 异或运算

 推荐阅读: 重生弃少归来 黎明之剑 说好的末世呢 七根凶简 民调局异闻录之勉传 学霸的黑科技系统 无限英灵神座 快穿攻略,病娇男主,宠翻天! 终极透视眼 纵横诸天的武者

编程之战 第一百八四章 异或运算


    其实,杨成刚才就在思考这个问题了。
    有没有更好的方法来进行数据保存和恢复?
    答案是肯定有的。
    可以使用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盘空间是不是只有一半?
    空间效率大大提高了!
    嗯,就是这种了,得跟项目经理好好谈谈。

温馨提示:方向键左右(← →)前后翻页,上下(↑ ↓)上下滚用, 回车键:返回列表

上一章章节目录下一章