引用:http://wujuxiang.blog.51cto.com/2250829/409196
通过使用异或运算,可以快速将两个数的值交换:原理如下:
我们知道异或是相同取0相反取1,如:
0101异或1101的结果是1000。如对两个数,经过三次进行异或运行后的结果是这两个数的值互换。如 a = 0101, b=1101,则进行的操作如下:
第一次异或运算: a = a ^b = 1000
第二次异或运算: b = a^b = 0101
第三次异或运算: a = a^b = 1101
至此,a和b这两个数的值已经互换了,并且没有使用到额外的储存空间。
那么,能不能直接写一个函数直接将a和b作为值参数进行数值互换呢。答案是否定的。我们知道函数参数的以值传递方式是对参数的值拷贝到当前函数栈帧中,相当于对传递过来的参数作一个内存拷贝吧。这样,传递过来的参数值改变并没有影响到原来与参数的变量或常量的值。如果是传递过来的是引用,结果就不一样了。
使用java语言简单实现如下:
public static void quickSwap(int vaules[]){
values[0] = values[0]^values[1];
values[1] = values[0]^values[1];
values[0] = values[0]^values[1];
}
分享到:
相关推荐
用一个函数指针来交换两个数
给两个整型变量赋值,然后交换两个变量的值,最后输出交换后的变量值。
Java 程序交换两个数字
本人上传的第一个作品,超级简单,两个整数交换的经典例子,是在一个类中实现的,给JAVA初学者一个借鉴。希望在技术上共同进步
两数交换的三种方法C#_java 两数交换的三种方法 两数交换方法
交换两个变量的值.java
最小内存消耗的 两个数交换值的方法 使用才c c++ java 等语言
在程序中实现交换两个数的功能并不复杂,但如果不使用中间变量,需要动一下脑筋。在本文介绍了两个方法(其实原理都是一个)。其基本原理是数的中和。也是说,通过某种运算(二元运算)将a和b两个数变成一个数,并...
下面小编就为大家带来一篇Java 交换两个变量的数值实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
使用三种方法交换来个数字 方法一:使用第三方变量交换数据; 方法二:使用加减法,并且不使用第三方变量 思路:a加上b的和,减去a,就等于b,再用这个数减去b,就等于a。 方法三:使用异或方法交换,...
Java基础精品课02-变量和运算符录屏7.交换两个变量的值.mp4
主要介绍了java 交换两个数据的方法实例详解的相关资料,需要的朋友可以参考下
Python还被语言流行指数的编译器Tiobe将它被评为最受欢迎的编程语言,20多年来首次将Python置于Java、C和JavaScript之上,真的非常荣幸了. 自从20世纪90年代初Python语言诞生至2022年,它已被逐渐广泛应用于系统...
在编程中可能会使用java来完成两个变量值的交换,本文将介绍如何解决此类问题,希望可以帮助您
DH密钥交换算法这个机制的巧妙在于它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道确定对称密钥。 我用Java写了两个例子,有需要的可以看看。
trySwap.java 试图交换两个形参的值 useOnlyTest.java 创建多个对象,演示this的作用 useStaticBolck.java 使用静态块 useStVar.java 使用静态成员变量 第4章 示例描述:本章学习继承与多态。 absClass.java ...
1.定义两个int 类型的变量 a 和 b ,分别打印输出a与b的‘加/减/乘/除/取余’的结果。2.定义一个int类型的变量 i ,输出这个...7.任意定义两个int类型的变量a=13和b=7,交换a和b的值,并打印交换后的结果(两种方法)
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。 import java.util.Scanner; //题目:输入某年某月某日,判断这一天是这...
主要介绍了Java两个变量的互换(不借助第3个变量)具体实现方法,需要的朋友可以参考下
1、采用图形界面实现两个内容的交换,图形界面如图所示 2、利用相应的组件编辑一个文本编辑器,参照Windows记事本,可以对字体大小、字形(粗体,斜体)、颜色进行设置,可以对内容进行添加、删除、修改,并保存文本...