java – XOR(^)交换算法如何工作?
发布时间:2020-12-15 04:41:56 所属栏目:Java 来源:网络整理
导读:这是一种交换a和b而不需要第三个变量的方法.我理解XOR在真实表中的含义是“真”还是“假”,但它究竟在这做什么呢?当我们处理的数字不是布尔值时,XOR如何工作? int a = 5; int b = 10;a = a ^ b;b = a ^ b;a = a ^ b; 解决方法 对于每个数字的二进制编码中
这是一种交换a和b而不需要第三个变量的方法.我理解XOR在真实表中的含义是“真”还是“假”,但它究竟在这做什么呢?当我们处理的数字不是布尔值时,XOR如何工作?
int a = 5; int b = 10; a = a ^ b; b = a ^ b; a = a ^ b; 解决方法
对于每个数字的二进制编码中的每个位,操作按位进行一次.
你玩过游戏“Lights Out”吗?每个灯都打开或关闭,每个按钮按下交换(XOR)一个模式.如果再次按下该按钮,则相同的交换会更改模式.如果按下组合按钮,情况也是如此.相同的按钮组合将更改它 – 顺序不必相同. 同样的行为发生在游戏中,也发生在变量的按位操作中.当您将两个变量放在一起时,一个中的位用于切换另一个中的位.由于这种变化的性质,哪一个正在进行切换无关紧要 – 结果是相同的.两个数字中相同位置的相同位在结果中的该位置产生0.相反的位在该位置产生1. a = a ^ b; a现在设置为a和b的组合位掩码. b仍然是原始值. b = a ^ b; b现在设置为(a XOR b)和b的组合位掩码. b取消,所以现在b设置为a的原始值. a仍然设置为a和b的组合位掩码. a = a ^ b; a现在设置为(a XOR b)和a的组合位掩码. (记住,b实际上包含了a的原始值)a的取消,因此a现在设置为b的原始值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |