首页 > 其他 > 详细

"Coding Interview Guide" -- 不用额外变量交换两个整数的值

时间:2019-05-15 22:15:50      阅读:119      评论:0      收藏:0      [点我收藏+]

题目

  如何不用任何额外变量交换两个整数的值

 

分析

  关于异或运算有三点性质:

  1、异或运算满足交换律和结合律;

  2、一个数与自己异或的结果为0,即a^a=0;

  3、一个数与0异或是它自己本身,即a^0=a;

 

1 a = a ^ b;
2 b = a ^ b;   //此时a == a ^ b; b = a ^ b = (a ^ b) ^ b = a ^ (b ^ b) = a;
3 a = a ^ b;   //此时b == a; a = a ^ b = (a ^ b) ^ a = (a ^ a) ^ b = b;

 

  Java中是值传递,所以没办法通过将两个整型值传递给交换函数实现交换它们的值

 

来源:左程云老师《程序员代码面试指南》

  

"Coding Interview Guide" -- 不用额外变量交换两个整数的值

原文:https://www.cnblogs.com/latup/p/10872478.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!