`
ronalke
  • 浏览: 11338 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

不使用中间变量的a,b值交换

 
阅读更多

不适用中间变量的a,b值交换

a=a+b;b=a-b;a=a-b;   a=a^b;b=a^b;a=a^b;

第一种解法不需要解释,但要说明的是有一个缺点就是当a,b很大时会溢出。关于第二个解法首先要了解异或运算满足交换律和结合律,从这个角度来看解法二可以这么理解:

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

 

 

 

 

分享到:
评论

相关推荐

    Java不使用中间变量交换两个数

    在程序中实现交换两个数的功能并不复杂,但如果不使用中间变量,需要动一下脑筋。在本文介绍了两个方法(其实原理都是一个)。其基本原理是数的中和。也是说,通过某种运算(二元运算)将a和b两个数变成一个数,并...

    不使用中间变量,交换int型的 a, b两个变量的值。

    代码如下: //by cloudgamer var a = 33,b=44 a=[a,b] b=a[0] a=a[1] 代码如下: //by Mr.司马 var a = 23,b=454; a = {a:b,b:a}; b = a.b; a = a.a; 评:1、2种解法是普遍解,只能交换数字,而3、4种则适用性更

    C++面试题之数a、b的值互换(不使用中间变量)

    题目要求:将数a、b的值进行交换,并且不使用任何中间变量。 程序如下: #include void swapValue1(int &a, int &b) //使用中间变量交换数据 { int temp = a; a = b; b = temp; } void swapValue2(int &a, ...

    JavaScript两个变量交换值的实现方法

    本文主要描述,如何不使用中间值,将两个变量的值进行交换。 一、普通做法 var a = 1, b = 2, tmp; tmp = a; a = b; b = tmp; 普通的做法就是声明多一个临时变量tmp,进行数据交换过程中的缓存。这样的做法直观...

    JS实现不用中间变量temp 实现两个变量值得交换方法

    1.使用加减法; var a=1; var b=2; a=a+b; b=a-b;...a=a-b;...2.使用乘除法(乘除法更像...以上所述是小编给大家介绍的JS实现不用中间变量temp 实现两个变量值得交换方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言

    PHP不用第三变量交换2个变量的值的解决方法

    一般都是借助第三个中间变量来实现原来两个变量的值交换,但是这道题却要求不能使用中间变量,这对于初学者来说也算是一个难题了。网上找到的几种方法总结如下:复制代码 代码如下://字符串版本 结合使用substr,...

    python交换两个变量的值方法

    大部分语言,例如c语言,交换两个变量的值需要使用中间变量。 例如交换a,b 伪代码: tmp = a a = b b = tmp python里面可以实现无临时变量的交换 (a,b) = (b,a) 对于它的交换原理我深感好奇,因为这意味着python...

    SWAP:交换两个变量的内容-matlab开发

    SWAP(A,B) 将变量 A 的内容放入变量 B,反之亦然。 您可以使用函数语法'swap(A,B)'或命令语法'swap A B'。 例子: A = 1:4 ;... 与这两种方法相比的优势在于,使用 SWAP 一种不必声明中间变量或担心输出。

    用C语言的泛型实现交换两个变量值

    第一种,最常用的是创建一个中间变量来循环交换它们的值: T a = ...; T b = ...; . T tmp = a; a = b; a = tmp; 我们称这种策略p99_swap1。在这里,编译器必须严格实现三个任务的顺序,否则,由此程序产生的结果将...

    经典C语言面试题(很多都是国际大公司的试题)

    //如何将a、b的值交换,并且不使用任何中间变量? //解析: //简而言之,用异或语句比较容易,不用担心超界的问题。 //如果采用: // a=a+b; // b=a-b; // a=a-b; //这样做的缺点就是如果a,b都是比较大的两个数,a=a...

    C#基础入门之算法:交换

    两个变量的交换也需要一只“空杯子”,就是中间变量: string a="振刚";//第一个变量 string b="文峰";//第二个变量 string temp;//中间变量 //第一步:将变量a赋值给中间变量 temp=a;//如同牛奶倒入空杯 //第二步...

    C++复习资料之系列

    下列选项中,( a,b,c )能交换变量a和b的值。 (a) t=b ;b=a ;a=t; (b) a=a+b ;b=a-b ;a=a-b; (c) t=a ;a=b ;b=t; (d) a=b ; b=a ; 14.执行语句 int i = 10,*p = &i; 后,下面描述错误的是( a ...

    Python交换变量

    a, b, c = b, c, a 来个复杂一点的例子,再来一顿家喻户晓的“冒泡排序”吧: 复制代码 代码如下: array = [1, 2, 5, 3, 6, 8, 4] for i in range(len(array) – 1, 1, -1): for j in range(0, i): if array[j]...

    两个数据的交换

    对于两个数据交换,我们最常用的算法是: { temp = A; A = B; B = temp; } 这种算法采用一个临时变量temp,做中间媒介;有时候你是否想过一个问题不要临时变量能实现这个交换吗?

    python 多进程共享全局变量之Manager()详解

    Manager支持的类型有 list,dict,Namespace,Lock,RLock,Semaphore,...而触发__setitem__方法比较直接的办法就是增加一个中间变量,如同在C语言中交换两个变量的值一样: int a=1;int b=2;int tmp=a;a=b;b=tmp; python例

    javascript入门笔记

    2、声明变量允许不使用var关键字,但并不推荐 练习: 1、创建一个网页 04-variable.html 2、声明一对 [removed][removed],并完成以下变量的声明 1、声明一个变量用于保存用户的姓名,并赋值为 "张三丰"; 2、...

    2011.模拟.java.高职

    如果要把两个整型变量a、b的值交换,一般要采用一个中间变量做过渡,但也可以在不借助任何其它变量的情况下完成。试填写缺失的代码。 3. 代码填空(满分3分) 许多人都曾经玩过“拍七”游戏。规则是:大家依次从1...

    你必须知道的495个C语言问题

    它不需要临时变量就可以交换a和b的值。 3.5 可否用显式括号来强制执行我所需要的计算顺序并控制相关的副作用?就算括号不行,操作符优先级是否能够控制计算顺序呢? 3.6 可是&&和||操作符呢?我看到过类似while...

Global site tag (gtag.js) - Google Analytics