题目

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

基本思路

  如果给定整数a和b使用如下三行代码即可交换a和b的值:

  a = a ^ b
  b = a ^ b
  a = a ^ b

 如何理解这三行代码的具体功能呢?首先要理解关于异或运算的特点:

假设a异或b的结果为c,c就是a整数位信息和b整数位信息的所有不同的信息。比如:a= 4 = 100, b = 3 = 011, a ^ b = 111.

a ^ c的结果就是b。比如:a = 4 = 100, c = 111, a ^ c = 011 = 3 = b

b ^ c的结果就是a。比如:b = 3 = 011, c = 111, b ^ c = 100 = 4 = a

再看上述代码,第一行的计算结果实际上就是c;第二行用第一行的结果异或b,就是相当于c ^ b,所以结果就是a,把这个值赋给b;第三行再用第一行的结果异或b,但此时b已经是a了,所以相当于c ^ a,结果为b赋给a,此时a和b就交换了位置

不用额外变量交换两个整数的值相关推荐

  1. 不借助第三个变量交换两个整数

    假设两个数x和y,则有: 方法1,算术运算(加减): x=x+y;  //x暂存两数之和 y=x-y;  //y为两数之和减去y,即原来的x x=x-y;  //x为两数之和减去现在的y(原来的x), ...

  2. C语言不用临时变量交换a,b的值

    现在有个题是: 要求不创建临时变量,来交换a,b的值,问有几种办法 首先先来一个创建临时变量交换的 int temp=0;temp=a;a=b;b=temp; 相信大家也都会,哈哈哈,就不多讲了 加减 ...

  3. 不用临时变量交换两个变量的值

    在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量. 类似于: temp=a;a=b;b=temp; 这样的语句,如果在没有临时变量的情况下,该如何做呢? 网络上的人们给出了两种方法: 一. ...

  4. C++:不用申请变量交换两个变量的值

    zz:http://yangjiayu.com/archives/83 http://hi.baidu.com/sunjoe/blog/item/895aa809d916fb226b60fba5.ht ...

  5. php比较两个变量的值_总结PHP不用第三个变量交换两个变量的值的几种方法

    "PHP不用第三个变量交换两个变量的值"这个题看到过好多次了,看来面试确实喜欢考这道题.今天,对于这个题目,我自己总结了几种方法,可能不全,大家来互相补充. 有些仅适用于字符串,方 ...

  6. 不创建临时变量交换两个数,这才是高手

    不创建临时变量交换两个数?这才是高手 1.基本介绍 1.代码编写 总结 1.基本介绍 交换两个数,想必大家都很熟悉,也很容易写出来就可以实现,即创建一个临时变量,就可以完成两个数的交换,然后更牛逼的大 ...

  7. 函数交换两个变量java_java 编写函数 交换两个基本变量的值

    java 编写函数 交换两个基本变量的值 Java编写一个函数交换两个变量的值 Java函数在传递过程中只能够传值,不能传址.这样,函数的参数在函数内部做任何变化就都不会反映到外部调用者来.所以解决之 ...

  8. 不使用第三变量交换两个变量的值

    在 Java 中,经常会需要交换两个变量的值,我们一般是使用第三变量完成,比如 temp = a; a = b; b = temp; 这样的写法确实能达成目标,但因此而引入了第三变量,对资源的消耗增加 ...

  9. C++不借助第三变量交换两个变量的值

    C++不借助第三变量交换两个变量的值 源代码: #include<iostream> using namespace std; int main(){int x,y;cout<< ...

最新文章

  1. 壕!电子科大计算机学院助理教授年薪50万起步, 100万安家费+150万科研启动金!...
  2. [perl]Wide character in print报错
  3. [2009.08.09]博客园北京俱乐部活动暨《博客园精华集:Web标准之道》现场签售通知...
  4. 排除字段重复行的SQL
  5. C#的static,interface,virtual,abstract,override的区别用法
  6. 太原市中考计算机考试系统,太原中考报名系统
  7. 蓝桥杯第八届省赛JAVA真题----日期问题
  8. java内存分配模型优点_高并发实战(二)-并发基础 缓存 MESI 内存模型
  9. 类库如何读取配置文件(app.config)?
  10. PAT (Basic Level) Practice (中文)1043 输出PATest (20 分)
  11. 人工智能为失散家人寻找“回家路”
  12. 算法入门——排序算法
  13. MCMC算法学习总结
  14. 2022年3月14日黑马程序员第二天
  15. android如何局域网通信,android局域网怎么通信
  16. no version information available问题解决
  17. 项目总结:快餐店POS收银系统
  18. pythyon爬虫实现12306查票
  19. C++控制台实现简单的注册登录
  20. python廖老师课程资源,廖老师的python教程

热门文章

  1. 新时代,大数据战略和DevOps更配
  2. 【C#】ADO .Net Entities Framework在WPF TreeView中的应用
  3. 二、lvm条带化的概念
  4. 【CSON原创】HTML5游戏框架cnGameJS开发实录(精灵对象篇)
  5. 记录一些比较有趣的网站,来给自己的网站设计积累思想
  6. Asp.net MVC2.0系列文章-MVC简介篇
  7. 802.11协议中帧控制域中To DS and From DS 比特位的含义
  8. 算法提高课-图论-负环-AcWing 1165. 单词环:spfa判正环、二分、01分数规划
  9. PAT甲级1010 Radix :[C++题解]进制位、秦九韶算法、二分(PAT通过率最低的一道题0.11)
  10. matlab如何绘制三维隐函数?