嘿,有人可以解释一下XOR运算符的重要性以及使用它可以解决的所有问题。如果有人可以列出我们可以使用XOR运算符解决哪种类型的问题,这将非常有帮助。
先谢谢。
答案 0 :(得分:3)
从XOR(^)的Truthtable开始:
x y x^y
0 0 0
0 1 1
1 0 1
1 1 0
使用XOR可以解决的问题:
2个布尔函数x
和y
的比较。
If x and y are same then x ^ y = 0
If x and y are different then x ^ y = 1
查找字节或整数的二进制表示中的1('1')数是奇数还是偶数。
unsigned char a = 10; //in binary representation 00001010 (even number of 1s)
unsigned char b = 11; //in binary representation 00001011 (odd number of 1s)
Simply XORing all the bits will be give:
* result = 1, if number of bits is odd
* result = 0, if number of bits is even
使用{Point 2.}可以找到数据位的奇偶校验(奇偶校验位)。
If even parity is required(i.e the data bits should have even number of 1s) then
if all the bits are XORed and if it gives the result 1 then
**Parity Bit = 1** else **Parity Bit = 0**.
Similar case can be made if odd parity of data bits are required.
在命题逻辑中if and only if (shortened iff) is a biconditional logical connective
和iff
可以使用XNOR
或~XOR
进行评估(即否定XOR)。
如果遇到涉及2个布尔函数A
和B
的等式,例如{A'.B + A.B'}
,则此等式将缩减为A ^ B
。使用基元运算符(AND(。),OR(+)和NEGATION('))求解{A'.B + A.B'}
将导致5个运算,使用XOR(^)
可以将其减少到1个运算。仅仅因为A^B = A'.B + A.B'
。如果遇到的等式是{A'B' + AB}
,那么{A'B' + AB}
= ~XOR
(即XNOR或否定异或)。
如果需要将数据中的特定位反转(即1到0或0到1),那么只需将该位与1
进行异或即可达到目的。
data = 1010;
^^^^
0001 (inverting the LSB, first bit from right)
---------------
result = 1011
答案 1 :(得分:1)
请注意:
A ^ B = A'.B + B'.A
而且,顾名思义
A ^ B =(A + B)%2
简单来说,按位XOR表示相同的位为1,不同的位为0
它可以在任何可以应用逻辑以消除相等的组件/成对的组件的地方使用。
例如一个问题,您可以查看哪双鞋不完整。您可以通过整数指定鞋子的类型。 您可以这样做:
xor = 0
n次:
xor ^ = shoe_type;
其中,^是大多数编程语言中XOR的运算符。
在这里,只有单一数量的整数保留在我们的变量xor中,成对出现的整数被评估为零。因为a ^ a = 0;