Redian新闻
>
问一个题 bit 实现两个int数字换位置
avatar
问一个题 bit 实现两个int数字换位置# JobHunting - 待字闺中
W*u
1
实现的方法是:
1. a^=b^=a^=b;
2. a^=b;
b^=a;
a^=b;
我以为1. 2. 是一样的,但事实上只有方法2才能实现两个值的交换,第一种方法只是a
的值赋给了b,然后a一直等于0.
求大神赐教!
avatar
l*8
2
在第一个方法里, 两次要用到的a可能一开始都就被放到寄存器里了。
这样,从右向左执行到最后一个xor的时候,还是用的原始的a,而不是更新的a'(= a^b
).
所以,最后一个xor就是 a^b', 也就是 a^a, that is 0.

是a

【在 W***u 的大作中提到】
: 实现的方法是:
: 1. a^=b^=a^=b;
: 2. a^=b;
: b^=a;
: a^=b;
: 我以为1. 2. 是一样的,但事实上只有方法2才能实现两个值的交换,第一种方法只是a
: 的值赋给了b,然后a一直等于0.
: 求大神赐教!

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。