每篇开头会提出一个问题,希望能引起你的思考,并且请你试着回答。相信在读完整篇后,你会有明确的答案。 问题:异或运算能用代数方法表示吗? A. 不能 B. 只能用加法 C. 只能用乘法 D. 加法和乘法都可以 为什么要研究异或?异或跟WCDMA有什么关系?异或是非常简单而又实用的二进制运算,所以它成为CDMA系统(包括过时的IS-95和我们现在说的Wideband-CDMA, WCDMA)核心中的核心。所以说掌握了异或算法,也就掌握了WCDMA的钥匙。 算法和性质 异或运算通常用符号"⊕“表示,A⊕B的结果用真值表表示是这样的 A B A⊕B 假 假 假 假 真 真 真 假 真 真 真 假 直观的解释异或运算,其实是个异值比较器,当两个输入端的值不同时,输出为真。用数学语言说: 当且仅当有一个输入为真时,结果是真。 仔细观察异或的真值表,可以得到出结论:任何值和本身异或,结果都是假。 A ⊕ A = 假 任何值和假异或,得到它本身。 A ⊕ 假 = A 异或满足结合律,所以结合以上两条关系,得到:任何值连续两次和同一个值异或,都能恢复原值。 (A ⊕ B) ⊕ B = A ⊕ (B ⊕ B) = A ⊕ 假 = A 代数表示法 为了方便表示和计算,我们可以用数字和代数运算表示异或算法。只要能得到相同的结果,它们之间没有任何区别。因为在实际电路里,只有电平的高与低、灯泡的亮和暗、电子的正与负,跟我们用什么表示数学符号去表示它们没有关系,数学符号仅仅用来记录状态。以下用两种代数表示法表示异或运算。 (0,1) 模2加法 模2加的意思是:将相加得到的和除以2的余数,作为最终的结果。 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 (1,–1)乘法 1 x 1 = 1 1 x -1 = -1 -1 x 1 = -1 -1 x -1 = 1 对比可以发现,这两种代数算法的结果和异或运算是完全一致的,我们可以用这两种代数运算表示信号的异或计算。所以从现在可以使用(1,-1)表示信号电平,乘法表示异或。比如:下面两组4比特序列进行异或运算,可以表示为: ( 1 -1 1 -1 ) x ( -1 1 -1 1 ) = ( -1 -1 -1 -1 )