小-鸟
2016-09-28 03:34
采纳率: 100%
浏览 1.0k
已采纳

编程的小问题求大神指点

求大神帮我看看画圈的是怎么回事,理解不了后面的注释啊。图片

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 和Java狼狈为奸 2016-09-28 03:44
    已采纳

    a = a^b,“^”这是异或,先把a和b的值转化为二进制,然后再进行异或,异或规则:同为0,不同为1.

    打赏 评论
  • zhuwei_clark 2016-09-28 03:47

    ^异或运算符(当两个数字不同时为1,其余为0)
    a第一次的值是a=3 b=5
    a=a^b 执行这行代码之后 a=3^5 b=5
    3的二进制是 0000 0011
    5的二进制是 0000 0101
    3^5 = 0000 0110 =6

    所以此时 a=3^5 也可以说=6
    b=a^b 执行这行代码之后 a=3^5 b=(3^5)^5

    6的二进制是 0000 0110
    5的二进制是 0000 0101
    b=(3^5)^5 = 6^5 = 0000 0011 = 3

    打赏 评论
  • wuhuancheng 2016-09-28 03:50

    a = a^b;
    b = (a^b)^b = a^(b^b) = a^0 = a;
    a = (a^b)^a = b;

    打赏 评论
  • www.wowothink.com 2016-09-28 07:16

    这个是进行a和b之间的数值交换

    打赏 评论

相关推荐 更多相似问题