第一百八四章 异或运算



阅读库推荐各位书友阅读:编程之战第一百八四章 异或运算
(阅读库www.yuedsk.com)(阅读库 www.yuedsk.com)    其实,杨成刚才就在思考这个问题了。

    有没有更好的方法来进行数据保存和恢复?

    答案是肯定有的。

    可以使用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盘空间是不是只有一半?

    空间效率大大提高了!

    嗯,就是这种了,得跟项目经理好好谈谈。阅读库 www.yuedsk.comyuedsk www.yuedsk.com

如果您中途有事离开,请按CTRL+D键保存当前页面至收藏夹,以便以后接着观看!

上一页 | 编程之战 | 下一页 | 加入书签 | 推荐本书 | 返回书页

如果您喜欢,请点击这里把《编程之战》加入书架,方便以后阅读编程之战最新章节更新连载
如果你对《编程之战》有什么建议或者评论,请 点击这里 发表。