为什么 x^0 = x?
Why is x^0 = x?
我有一个很简单的问题。
为什么用 0 XOR
得到数字本身就是数字。
谁能举个例子证明一下。
假设我有号码 5
5^0==>
我想答案应该只是5的最后一位XOR'ed
加上0,但答案还是5。
0为假,1为真。
根据定义,异或运算A XOR B
是"A or B, but not, A and B"。所以,因为 B 是假的,所以结果将是 A.
此外,XOR truth table shows that it outputs true whenever the inputs differ:
Input Output
A B XOR Result
0 0 0
0 1 1
1 0 1
1 1 0
如你所见,无论 A 的值是多少,如果它与 0 进行异或,结果就是该位本身。
所以,正如你所说:
5 = 101, 0 = 000
When performing XOR operation on the individual bits:
101
000
----
101 = 5.
因此,X^0 的结果就是 X 本身。
你有什么不明白的。请阅读 XOR
00000101 // = 5
00000000 // = 0
--------
00000101 // = 5
按位运算对数字中的一组位进行操作 - 而不仅仅是最后一位。
因此,如果您对 32 位整数执行一些按位运算,那么所有 32 位都会受到影响。所以整数 5
是 0.....0000101 (32 bits)
。如果您只需要 xor
操作后的最后一位,请应用二进制 AND
和 1
:
<script>
console.log("%i\n",(5^0)&1);
console.log("%i\n",(6^0)&1);
</script>
我有一个很简单的问题。
为什么用 0 XOR
得到数字本身就是数字。
谁能举个例子证明一下。
假设我有号码 5
5^0==>
我想答案应该只是5的最后一位XOR'ed
加上0,但答案还是5。
0为假,1为真。
根据定义,异或运算A XOR B
是"A or B, but not, A and B"。所以,因为 B 是假的,所以结果将是 A.
此外,XOR truth table shows that it outputs true whenever the inputs differ:
Input Output
A B XOR Result
0 0 0
0 1 1
1 0 1
1 1 0
如你所见,无论 A 的值是多少,如果它与 0 进行异或,结果就是该位本身。
所以,正如你所说:
5 = 101, 0 = 000
When performing XOR operation on the individual bits:
101
000
----
101 = 5.
因此,X^0 的结果就是 X 本身。
你有什么不明白的。请阅读 XOR
00000101 // = 5
00000000 // = 0
--------
00000101 // = 5
按位运算对数字中的一组位进行操作 - 而不仅仅是最后一位。
因此,如果您对 32 位整数执行一些按位运算,那么所有 32 位都会受到影响。所以整数 5
是 0.....0000101 (32 bits)
。如果您只需要 xor
操作后的最后一位,请应用二进制 AND
和 1
:
<script>
console.log("%i\n",(5^0)&1);
console.log("%i\n",(6^0)&1);
</script>