由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一个题 bit 实现两个int数字换位置
相关主题
刚一个interview问的好底层呀。。。位运算的复杂度是多少?
今天Amazon的phone interview做硬件模拟器的职位有前途吗
数组寻址速度问题?c++ is too nasty
两道面试题,请大家说说看法C++ volatile请教
弱问个C++ 问题 (const_cast)发个高盛onsite的面经
说说下午的面试经历。。。问以前编过多少行代码有什么用
问道面试体(software)Linux context switch 高通 面试题。??
一道有趣的面试题。stackexchange上超火 大家说说看法?BB 一个电面题
相关话题的讨论汇总
话题: 方法话题: 实现话题: 赋给话题: 个题话题: xor
进入JobHunting版参与讨论
1 (共1页)
W***u
发帖数: 81
1
实现的方法是:
1. a^=b^=a^=b;
2. a^=b;
b^=a;
a^=b;
我以为1. 2. 是一样的,但事实上只有方法2才能实现两个值的交换,第一种方法只是a
的值赋给了b,然后a一直等于0.
求大神赐教!
l*********8
发帖数: 4642
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.
: 求大神赐教!

1 (共1页)
进入JobHunting版参与讨论
相关主题
BB 一个电面题弱问个C++ 问题 (const_cast)
小白问题:如何能短时间内提高C++能力?说说下午的面试经历。。。
问道National Instruments面试题问道面试体(software)
请教nvidia software engineer的电面经验一道有趣的面试题。stackexchange上超火 大家说说看法?
刚一个interview问的好底层呀。。。位运算的复杂度是多少?
今天Amazon的phone interview做硬件模拟器的职位有前途吗
数组寻址速度问题?c++ is too nasty
两道面试题,请大家说说看法C++ volatile请教
相关话题的讨论汇总
话题: 方法话题: 实现话题: 赋给话题: 个题话题: xor