位运算 交换问题 pascal

[复制链接]
查看11 | 回复2 | 2012-3-25 09:03:05 | 显示全部楼层 |阅读模式
procedure swap(var a,b:longint); var t:longint; begin
// t:=a; a:=b; b:=t;
a:=a xor b; b:=a xor b; a:=a xor b;//(位运算交换) end;这个算法是正确的, 它编译出来的机器代码效率比三角交换高,你说在直接放在排序中用错误,可能问题在是程序上,代码贴出来看吧。...
回复

使用道具 举报

千问 | 2012-3-25 09:03:05 | 显示全部楼层
xor是“异或”表达式比如a=2 b=3则二进制是a=(10)2 b=(11)2第一次运算 :同位得0 异或得1 ,10 xor 11 = 01(a) ,此时a=01 b=11第二次运算 :01 xor 11 = 10(b) ,此时a=01 b=10第三次运算 :01 xor 10= 11(a) ,此时a=11 b=10运算方...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行