很有意思的一种两个数交换的方法

1 int i = 26;
2         int j = 47;
3         i = i ^ j;
4         j = i ^ j;
5         i = i ^ j;
6         System.out.println(i);
7         System.out.println(j);
8     }
时间: 2024-10-10 01:53:22

很有意思的一种两个数交换的方法的相关文章

java交换两个数的常见方法及效率测试

原文地址--http://blog.csdn.net/qq525099302/article/details/47294443 论两个数的交换的重要性 讨论交换两个数的方法对某些人来说无聊,但某些人很乐意探究,甚至某些面试官喜欢用这个做文章.刚出来找工作笔试的时候我也碰到与之相关的问题. 常见的两个数交换的方法 边赋值边运算 加减减交换 用中间变量交换 异或交换 下面是代码 public class Test { public static void main(String[] args) {

java 两个数交换问题

大家其实知道可以用异或来实现交换  学过C的人看如上的程序  一看以为肯定交换了 但是注意 C对表达式的计算顺序和Java是不同的  java是从左往右的  所以不对 简单修改就可以了: 交换连个数的方法 一.使用中间量  (这个就不多说了) 二.使用异或(如上) 三.使用加减法 这个不需要解释吧 java 两个数交换问题,布布扣,bubuko.com

两个数交换的三种方式

记得刚开始学C++的时候,也做过两个数的交换,当时只用过下面的第一种和第三种方法,今天在看传智播客Java视频教程的时候,学到了另两种方式 假设a=10,b=20,交换a,b的值 方法一,使用第三方的变量,也是最常用的方法 int c=a; a=b; b=a; 方法二,位异或运算 a=a^b; b=a^b; //a^b^b=a a=a^b; //a^b^a=b 方法三,变量相加 a=a+b; b=a-b; a=a-b; 方法四,一句话搞定 b=(a+b)-(a=b); 在实际的工作中常用的还是第

位运算和关于两个数交换的多种方法

我们知道,位运算在计算中有着广泛的应用. 在计算机的各种编程语言中位运算也是一种不可缺少的运算,尤其是在计算机的底层实现代码中. 以下我们就来介绍一下位运算. 1.左移运算<<  左移右移都是移动二进制数 0000-0000 0000-0000 0000-0000 0000-1100     =12 向左移动一位变为(右边缺几位就补几个0) 0000-0000 0000-0000 0000-0000 0001 1000       =24 再向左移一位 0000-0000 0000-0000

两个数交换的六种方法

一般我们交换两个数常借助第三个变量,那么不借助第三个变量怎么交换呢,今天来试一试. 第一种方法,借助第三个变量 1 int c =a; 2 a = b; 3 b =c; 第二种方法 1 a= a + b -(b = a); 第三种方法 1 b = a + (a = b)*0; 第四种方法 1 a = a + b; 2 b = a -b; 3 a = a - b; 第五种方法,不过需要注意两个相乘数比较大的话容易超出int型的范围. 1 a = a*b; 2 b = a/b; 3 a = a/b;

两个数交换问题

在很多编程语言中,我们大部分使用的都是值传递,然而值传递并不能真正地改变参数的数值. 下列值传递方法无法实现两个数的交换: void swap(int a,int b) { int t; t = a; a = b; b = t; } C语言版: //指针 void swap(int *a,int *b) { int temp; temp = *a; *a = *b; *b = temp; } C++: //通过引用实现,实质上是传送地址行参来实现两个整数的交换的 void swap(int &a

C语言编程 求两个数的平均值方法(三种方法)

第一种方法是最常见的average=(a + b) / 2这种方式,求两个数的平均值 第二种方法是当 a<b 时averag=a+(b-a)/2 这里着重介绍的是第三种方法 average=(a&b) + (a^b)>>1 推导过程如下a + b = (a&b) 2 + (a^b)) --->average=((a&b)2+(a^b))/2 ---->average=(a&b) + (a^b)>>1 eg:两个数为15和515二进制

6.两个数交换

package test; public class TestChange { public static void main(String[] args) { int num1=5; int num2=6; System.out.println("交换前:"); System.out.println("num1:"+num1); System.out.println("num2:"+num2); int temp=num1; num1=num2

两个数交换

void Swap(int *a, int *b) { int c = *a; *a = *b; *b = c; }