您的位置:首页 > 其它

按位异或,实现不借助临时变量的两数交换

2015-07-27 23:02 344 查看
例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:

    a = a^b;   //a=10100111

    b = b^a;   //b=10100001

    a = a^b;   //a=00000110

原因:

1 0^N == N

2 11..1^N == ~N

3 N^N == 0

4 N^M == M^N

5 (L^N)^M == L^(N^M) (可推广到任意个数,同一位1、0个数不变,位置任意变化,按位异或结果不变)

异或运算的关键点是:同一位1、0个数不变,位置任意变化,按位异或结果不变
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: