如何在不介入第三个变量的情况下实现两个数的交换

如何在不介入第三个变量的情况下实现两个数的交换: 1 package myeclipseFiles2;
 2
 3 public class Operator {
 4
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         int a=6;
 8         int b=1;
 9         System.out.println(a+":"+b);
10
11         //方法一:不借助第三个变量完成两个数的交换
12         a=a+b;//a=6+1  b=1
13         b=a-b;//a=6+1  b=6+1-1
14         a=a-b;//a=6+1-(6+1-1) b=6+1-1=6
15         System.out.println(a+":"+b);
16
17     }
18
19 }

异或^ :操作数相同为0 不同为1

    本身与本身异或的结果为0

    任何数和0异或的结果是那个数本身

    异或^操作满足交换律

 1 package myeclipseFiles2;
 2
 3 public class Operator {
 4
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7         int a=6;
 8         int b=1;
 9         System.out.println(a+":"+b);
10
11         //方法二:不借助第三个变量完成两个数的交换
12         a=a^b;//a=1^6 b=1
13         b=a^b;//a=1^6 b=1^6^1=6
14         a=a^b;//a=1^6^6=1 b=6
15         System.out.println(a+":"+b);
16
17     }
18
19 }
时间: 2024-10-01 04:51:31

如何在不介入第三个变量的情况下实现两个数的交换的相关文章

JS 不声明第三个变量的情况下实现两数变换

1. 1 var a = 1; 2 var b = 2; 3 a = a + b; //3 4 b = a - b; //1 5 a = a - b; //2 6 console.log(a); 7 //2 8 console.log(b); 9 //1 2. var a = 1; var b = 2; a ^= b; b ^= a; a ^= b; console.log(a); //2 console.log(b); //1 console.log((a ^= b) === (a ^ b)

如何不用第三个变量实现两个数的交换

一般我们在写程序时如果遇到两个数需要交换时写作如下: 1 int x,y; 2 3 int temp; 4 5 temp=x;x=y;y=temp; 而如果不允许有第三个变量出现即不允许有temp出现时应该如何做呢?可以写作如下: 1 int x,y; 2 3 x=x+y; 4 5 y=x-y; 6 7 x=x-y;//上述一般可以满足,但是有时候x+y或许或出现上溢或者下溢. 而利用两个数的异或或许更加巧妙—— 异或有如下性质: 交换律:x^y=y^x 结合律:x^(y^z)=(x^y)^z

如何不运用第三方变量实现两个数的交换

当遇到交换两个变量的时候,我们通常使用的是借助第三方变量实现两个数的交换.那么如果不使用第三方变量时,该怎么操作呢. 下面有两种方法: 1.通过已有的两个变量之间的加或减实现: 这种方法对于两个都是无限接进int取值范围,而相加超出int取值范围的情况不适用. 2.通过异或实现(异或符号为^) ******************************************************************************************************

js+jquery+html实现在三种不通的情况下,点击图片放大的效果

js+jquery+html实现在三种不通的情况下,点击图片放大的效果. 三种情况分别是:图片的父元素宽高固定;  图片的宽高固定;  图片的父元素宽固定,高度不固定 第一种情况:图片的父元素宽高固定: 1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title>Title</title> 7

PHP_变量什么情况下加大括号{}

php变量什么情况下加大括号{} 如:$sql = "insert into article (`channel_id`,`title`,`detail`,`pub_time`) values ('{$cid}','{$title}','{$detail}','{$time}');"; 不加似乎也可以,加{}是什么意思呢?还有字段名 为什么要以``包括呢? ================================================== 最佳答案 至少便于阅读嘛~~

PHP中如何不引入第三个变量的条件下实现:交换两个变量的值?

(1)一般情况下,我们只需要引入一个临时变量中转一下即可: <?php $a=2; $b=3; echo "交换之前a=".$a.",b=".$b; echo "<br />"; $tmp=$a; $a=$b; $b=$tmp; echo "交换之前a=".$a.",b=".$b; ?> (2)而如果不引入临时变量时,怎么操作呢?其实本质还是需要第三者插足的,只是这个第三者我们可以自

三种传值方式遇上两个数的交换

最近在学习数据结构的时候发现以前学的C++的有些东西都忘了,特别是老师提到的三种传值的方式——单向值传递,地址传递,双向引用传递:为此,我这里用如何交换两个数的例子来说明一下三种传值方式的机制. 先看看源代码: 1 #include<iostream> 2 using namespace std; 3 int swap1(int m1,int m2)//单向值传递 4 { 5 int temp = m1; 6 m1 = m2; 7 m2 = temp; 8 cout<<m1<

php变量什么情况下加大括号{}

下面几个比较能说明原因的解释是: 表示{}里面的是一个变量  ,执行时按照变量来处理 在字符串中引用变量使用的特殊包括方式,这样就可以不使用.运算符,从而减少代码的输入量了. 其实输出那块是等同于print   "hello   ".$arr['fruit']; PHP: 字符串变量中大括号(花括号{})的作用 PHP 变量后面加上一个大括号{},里面填上数字,就是指 PHP 变量相应序号的字符.例如:$str = 'hello';echo $str{0}; // 输出为 hecho

python中不引入第三方变量的情况下交换a\b的值

a = 1b = 2a=a+b #a是3b=a-b # b是1a=a-b # a是2print('a:',a)print('b:',b)