不用额外变量交换两个整数的值
题目
如何不用任何额外变量交换两个整数的值
基本思路
如果给定整数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就交换了位置
不用额外变量交换两个整数的值相关推荐
- 不借助第三个变量交换两个整数
假设两个数x和y,则有: 方法1,算术运算(加减): x=x+y; //x暂存两数之和 y=x-y; //y为两数之和减去y,即原来的x x=x-y; //x为两数之和减去现在的y(原来的x), ...
- C语言不用临时变量交换a,b的值
现在有个题是: 要求不创建临时变量,来交换a,b的值,问有几种办法 首先先来一个创建临时变量交换的 int temp=0;temp=a;a=b;b=temp; 相信大家也都会,哈哈哈,就不多讲了 加减 ...
- 不用临时变量交换两个变量的值
在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量. 类似于: temp=a;a=b;b=temp; 这样的语句,如果在没有临时变量的情况下,该如何做呢? 网络上的人们给出了两种方法: 一. ...
- C++:不用申请变量交换两个变量的值
zz:http://yangjiayu.com/archives/83 http://hi.baidu.com/sunjoe/blog/item/895aa809d916fb226b60fba5.ht ...
- php比较两个变量的值_总结PHP不用第三个变量交换两个变量的值的几种方法
"PHP不用第三个变量交换两个变量的值"这个题看到过好多次了,看来面试确实喜欢考这道题.今天,对于这个题目,我自己总结了几种方法,可能不全,大家来互相补充. 有些仅适用于字符串,方 ...
- 不创建临时变量交换两个数,这才是高手
不创建临时变量交换两个数?这才是高手 1.基本介绍 1.代码编写 总结 1.基本介绍 交换两个数,想必大家都很熟悉,也很容易写出来就可以实现,即创建一个临时变量,就可以完成两个数的交换,然后更牛逼的大 ...
- 函数交换两个变量java_java 编写函数 交换两个基本变量的值
java 编写函数 交换两个基本变量的值 Java编写一个函数交换两个变量的值 Java函数在传递过程中只能够传值,不能传址.这样,函数的参数在函数内部做任何变化就都不会反映到外部调用者来.所以解决之 ...
- 不使用第三变量交换两个变量的值
在 Java 中,经常会需要交换两个变量的值,我们一般是使用第三变量完成,比如 temp = a; a = b; b = temp; 这样的写法确实能达成目标,但因此而引入了第三变量,对资源的消耗增加 ...
- C++不借助第三变量交换两个变量的值
C++不借助第三变量交换两个变量的值 源代码: #include<iostream> using namespace std; int main(){int x,y;cout<< ...
最新文章
- 壕!电子科大计算机学院助理教授年薪50万起步, 100万安家费+150万科研启动金!...
- [perl]Wide character in print报错
- [2009.08.09]博客园北京俱乐部活动暨《博客园精华集:Web标准之道》现场签售通知...
- 排除字段重复行的SQL
- C#的static,interface,virtual,abstract,override的区别用法
- 太原市中考计算机考试系统,太原中考报名系统
- 蓝桥杯第八届省赛JAVA真题----日期问题
- java内存分配模型优点_高并发实战(二)-并发基础 缓存 MESI 内存模型
- 类库如何读取配置文件(app.config)?
- PAT (Basic Level) Practice (中文)1043 输出PATest (20 分)
- 人工智能为失散家人寻找“回家路”
- 算法入门——排序算法
- MCMC算法学习总结
- 2022年3月14日黑马程序员第二天
- android如何局域网通信,android局域网怎么通信
- no version information available问题解决
- 项目总结:快餐店POS收银系统
- pythyon爬虫实现12306查票
- C++控制台实现简单的注册登录
- python廖老师课程资源,廖老师的python教程
热门文章
- 新时代,大数据战略和DevOps更配
- 【C#】ADO .Net Entities Framework在WPF TreeView中的应用
- 二、lvm条带化的概念
- 【CSON原创】HTML5游戏框架cnGameJS开发实录(精灵对象篇)
- 记录一些比较有趣的网站,来给自己的网站设计积累思想
- Asp.net MVC2.0系列文章-MVC简介篇
- 802.11协议中帧控制域中To DS and From DS 比特位的含义
- 算法提高课-图论-负环-AcWing 1165. 单词环:spfa判正环、二分、01分数规划
- PAT甲级1010 Radix :[C++题解]进制位、秦九韶算法、二分(PAT通过率最低的一道题0.11)
- matlab如何绘制三维隐函数?