本文主要是介绍异或(XOR) 与同或(XNOR),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
异或(xor),是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。其运算法则为:
逻辑表达式:F=AB’⊕A’B((AB’⊕A’B)’=AB⊙A’B’,⊙为“同或”运算)
a⊕b = (¬a ∧ b) ∨ (a ∧¬b)
运算法则:
- a ⊕ a = 0
- a ⊕ b = b ⊕ a
- a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;
- d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.
- a ⊕ b ⊕ a = b.
6.若x是二进制数0101,y是二进制数1011;
则x⊕y=1110
只有在两个比较的位不同时其结果是1,否则结果为0
即“两个输入相同时为0,不同则为1”!
巧用
与其它语言不同,C语言和C++语言(C++支持xor,用法和效果如 ‘^’ 相同)的异或不用xor,而是用 “^” ,键入方式为Shift+6。(而其它语言的“^”一般表示乘方)
若需要交换两个变量的值,除了通常使用的借用中间变量进行交换外,还可以利用异或,仅使用两个变量进行交换
如:
void swap(int &a,int &b)
{a=a^b;b=b^a;a=a^b;
}
详解:
a1=a^bb=b^a1=b^a^b=a
//此时a1=a^b b=a
a=a1^b=a^b^a=b
综上:同一变量与另一变量和其异或值异或等于另一个数,如(ab)b=a。
用例:可使用于加密算法某一环节或更多环节,使算法更复杂,不易被破解,安全性更高。
一般作用:
同或(XNOR),电路表示则为同或门,双输入若相同则输出为1,不同则输出为0!
例如:1 xnor 1=1;1 xnor 0=0;0 xnor 0=1;
这篇关于异或(XOR) 与同或(XNOR)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!