如何异或同样的数字?

时间:2017-04-14 18:54:46

标签: java xor boolean-operations

我想在自己的时间上对X号进行异或。最简单的方法是在循环中将其与自身进行异或。还有更好的方法吗?

int t = k;
for(int i = 0; i < n; i++) k = k ^ t;

2 个答案:

答案 0 :(得分:3)

如果N为奇数,则将N个N副本一起产生K,如果N是偶数,则产生0。 K ^ K == 0,0 ^ K == K,它只是在每个附加K的结果之间交替。(你的代码目前正在共同扫描n + 1份k,我猜测是一个错误。)

$stats

答案 1 :(得分:0)

偶数XOR's的数字会导致0:k ^ k = 0
数字的XOR's的奇数会产生该数字:k ^ k ^ k = k

因此,您无需XOR the number自己n次检查最终结果。
事实上,你根本不需要XOR。只需检查n是偶数还是奇数。

return (n & 1) == 0 ? 0 : k

偶数(n & 1) = 0 |当奇数(n & 1) = 1