话说为啥FEC需要异或( ^/⊕ )操作呢?

异或: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)

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之异或运算应用相关推荐

  1. 不占用多余空间实现值的交换——异或运算

    首先什么是异或运算? ^规则: 0 ^ x = x x ^ x = 0 那么 a 与 b 交换值如何做呢???三行代码

  2. C 关于使用异或运算操作概述

    对于异或运算操作,每次都需要读取两个数据到寄存器中,再进行运算操作,之后把结果写回到变量中,前后共需要三次内存写入操作. 异或运算可以达到交换两数的目的,代码如下: void swap(int &am ...

  3. 训练三层BP神经网络实现异或运算 Python 代码实现

    本文主要使用下面的网络结构来完成 异或运算 异或运算 : 0^0 = 0, 1^0 = 1, 0^1 = 1, 1^1 = 0 . 上图的公式推导可以参考博文: 三层神经网络前向后向传播示意图 imp ...

  4. 大脑只需单个神经元就可进行XOR异或运算,Science新研究揭开冰山一角,引发热议...

    边策 赖可 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在机器学习中,异或(XOR)这样的非线性问题一直需要多层神经网络来解决.科学家一直以为,即使在人类大脑中,XOR运算也需要多层神经元网 ...

  5. 尼姆博奕 (Nimm Game) 异或运算;

    讲到博弈,不得不讲异或运算, 我真服了 大神了, 怎么会将博弈和二进制联系到一起,  大写的服! 异或运算 ^    原理就是  二进制形式,对于相应的每一位  相同 为0 不同为1 ; 简单理解就是 ...

  6. 关于一些运算((与运算)、|(或运算)、^(异或运算)........)的本质理解【转】...

    看到一篇博客,关于一些运算的解析,觉得有用,怕以后找不着,直接复制下来,以备以后学习用 原文链接:https://blog.csdn.net/xiaopihaierletian/article/det ...

  7. 异或运算_专题 | 异或运算的一些应用

    点击上方蓝字设为星标 每周一.三.五上午 8:30 准时推送 下面开始今天的学习- 定义 异或是一个数学运算,用于逻辑运算.如果 a.b 两个值不同,则异或结果为 1 ,否则结果为 0 .真值表如下: ...

  8. 左神算法课笔记(一):时间复杂度、排序、对数器、二分法、异或运算

    我们常说,程序=算法+数据结构.结果光搞框架去了,有点说不过去~ 时间复杂度 常数时间的操作:如果一个操作的执行时间不以具体样本为转移,每次执行时间都是固定时间.称这样的操作为常数时间操作. 数组的寻 ...

  9. python异或运算怎么算_小强学Python+OpenCV之-1.4.4掩膜mask及位运算(与、或、非、异或)...

    问题引入 在小强学Python+OpenCV之-1.4.2裁剪一节,我们使用的是numpy数组切片功能实现图片区域的裁剪. 那么,如果我们想要裁剪图像中任意形状的区域时,应该怎么办呢? 答案是,使用掩 ...

最新文章

  1. 33. 使用fread()/fwrite()往文件中写入结构体,从文件中读出结构体
  2. mysql表大小限制_技术分享 | 在磁盘上查找 MySQL 表的大小
  3. Java之SPI机制
  4. JQuery跨站脚本漏洞
  5. esp32 怎么分配freertos 堆栈大小_深度解剖~ FreeRtos阅读笔记2 任务创建、内核链表初始化...
  6. GitHub---最简单的使用
  7. C/C++字符串输入方法比较(带回车不带回车输入)
  8. 工作流实战_26_flowable 变量判断汇总
  9. 图论 —— 二分图 —— 匈牙利算法
  10. Tesla 两年前车祸致死案,事故报告终发布
  11. 数据:BTC全网算力为134.40 EH/s,新增地址数54.03万
  12. Python 之父 Guido van Rossum 退休失败,正式加入微软搞开源!
  13. VB从程序中生成Exe文件
  14. Emscripten 单词_免费下载 | 北师大版高中英语教材重点单词汇总(可下载mp3版本)...
  15. 关于微信退款出现错误代码:52的解决方法【转】
  16. (day 40 - 双指针+库函数) 剑指 Offer 58 - I. 翻转单词顺序
  17. 搜索引擎选择: Elasticsearch与Solr(转载)
  18. 测试用例场景法3个例子
  19. JSP传参 input隐藏域
  20. Unity HDR (高动态范围 )

热门文章

  1. [转载]Oracle 游标使用全解
  2. Oracle-存储过程实现更改用户密码
  3. Tomcat数据源总结
  4. href 一个正则表达式的解析 ? 号解析
  5. 数据埋点方案和规范确定
  6. 产品汪才不是你想的辣么简单
  7. 案例分析:产品中非模态反馈”信息设计的意义与方式
  8. PMCAFF微课堂 | 运营女神揭秘产品运营推广中的场景思维
  9. 怎么才能判断一个产品用户体验的好坏?
  10. 国内三款主流海淘产品APP竞品分析