Java中异或运算实现两个整数的交换以及其功能函数实现
来源:互联网 发布:战争程序员白濑 动漫 编辑:程序博客网 时间:2024/05/16 03:06
今天学习到一种超酷炫的交换两个整数的方法,给各位分享一下。异或运算属于位运算的一种,首先简单介绍一下异或预算的语法规则。
假设a与b为不相等的两个整数。
(1)a^a=0;
(2)a^b=1;
(3)a^0=a;
(4)a^b=b^a,即异或满足交换律。
(5)(a^b)^c=a^(b^c),即异或满足结合律。
接下来介绍一下异或运算实现两个整数交换的原理,同样假设a与b为两个不相等的整数。
第一步:a=a^b。此时a=a^b;
第二步:b=a^b。因为上步a=a^b,所以此时b=a^b=(a^b)^b=a^(b^b)=a^0=a;
第三步:a=a^b。因为上步a=a^b,b=a,所以此时a=a^b=(a^b)^a=(b^a)^a=b^(a^a)=b^0=b。
<span style="font-size:18px;">public class Test1 {public static void main(String[] args) {int a=5;int b=2;System.out.println("交换后:a="+a+", b="+b);a=a^b;b=a^b;a=a^b;System.out.println("交换后:a="+a+", b="+b);}}</span>
异或运算操作简单,运算速度快,且不需要开辟额外的内存空间。是不是很酷炫呢?有时候为了编码需要,我们要将这样的功能封装在一个函数体中,但如下所示的方法是不能实现两个整数的交换的,只是交换了a和b的地址而已。
<span style="font-size:18px;">private void swap(int a,int b) {int t=a;a=b;b=t;}</span>
java中没有指针和引用的概念,我们没有办法像C那样在函数体中通过传递引用来实现两个整数的交换,那么要怎么做呢?我们可以借助数组来完成,数组的索引相当于C中的指针。我们通过异或运算和建立临时变量两种方法来分别说明使用如何使用数组来实现交换的功能函数。
<span style="font-size:18px;">public class Test2 {public static void main(String[] args) {int a=5;int b=2;int []f=new int[2];f[0]=a;f[1]=b;System.out.println("交换后:a="+a+", b="+b);swapByBit(f);System.out.println("通过异或交换:a="+f[0]+", b="+f[1]);swapByTemp(f);System.out.println("通过临时变量交换:a="+f[0]+", b="+f[1]);}private static void swapByBit(int []f) {f[0]=f[0]^f[1];f[1]=f[0]^f[1];f[0]=f[0]^f[1];}private static void swapByTemp(int []f) {int t=f[0];f[0]=f[1];f[1]=t;}}</span>
1 0
- Java中异或运算实现两个整数的交换以及其功能函数实现
- 异或运算实现两个整数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- 异或运算实现两个数的交换
- Java实现两个整数变量的交换
- 为什么异或运算可以实现两个整数的交换,而无需借助第3个临时变量
- 为什么异或运算可以实现两个整数的交换,而无需借助第3个临时变量
- 异或运算交换两个整数
- 通过异或运算交换两个整数的值
- clojure实战——函数内存化
- Android 反射Method应用
- 目前状态
- 关于awakeFromNib的学习
- C-055.自己用C语言写的一个正整数的十进制转二进制的代码
- Java中异或运算实现两个整数的交换以及其功能函数实现
- UITabBarController与UINavigationController异同点浅谈
- Triangle Count算法
- POJ 1681 (高斯消元)
- 【openjudge】集合问题
- 百度地图自定义图层----BMapTileCutterJava切图工具网络版
- hdu4864 贪心+平衡二叉搜索树(map)
- 机器学习Python环境安装
- coderforce 489B B. BerSU Ball