2 u011862238 u011862238 于 2014.01.25 15:09 提问

java 用异或来交换 java

说下底层运算过程,为什么要慎用,有什么局限性? 没有了 没有了没有了没有了没有了没有了没有了没有了 没有了

1个回答

tlxzsz
tlxzsz   2014.01.26 15:30

int a = 100 ,b = 10;
a = a^b;
b = b^a;
a = a^b;

u011862238
u011862238 我知道 为什么要慎用,有什么局限性? 后面的问题?
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java异或交换两个整数或字符串原理
java交换两个数或字符串可以用temp来交换,如果不使用temp,有下面两种交换方法:1.对于数来说,可以用a = a + b; b = a - b; a = a - b; 来进行交换 2.更为通用的方法是用异或来交换a=a^b; b=b^a; a=b^a;
java 使用异或运算交换
java中的数据类型分为: 图片出自:Java四类八种数据类型 对于整数类型:byte,short,int,long (1) 可以使用异或运算,来实现两个整数变量中的值。这样的好处是,不用引入多余的空间,也不会超出改类型(例如int)的表示范围。 (2)借助缓存变量,实现交换. 对于浮点类型,不能使用异或运算来交换,可以引入一个缓存变量来实现交换 例子: package Ct
用异或来交换两个变量更耗时
FROM:陈硕 http://blog.csdn.net/solstice/article/details/5166912  翻转一个字符串,例如把 "12345" 变成 "54321",这是一个最简单的不过的编码任务,即便是 C 语言初学者的也能毫不费力地写出类似如下的代码:   // 版本一,用中间变量交换两个数,好代码 void reverse_by_swap(char* str,
用异或来交换两个变量能提高速度是错误的
在进行两个变量的时候,经常会看到有些书误人子弟的推荐使用异或的方式: 方式一 {   x = x ^ y;   y = x ^ y;   x = x ^ y; } 而不是采用临时变量实现交换: 方式二 {   int temp;   temp = a;        a = b;   b = temp; } 美其名曰:节省内存,提高运行速度。 临时变量交换的方式:
异或运算来实现两个变量互换
一般情况下,如果我们要实现两个变量互换需要借助于一个第三方临时变量,这个临时变量可以临时存放某一个变量的值,帮助我们完成值的交换。有没有不需要其他变量、直接实现值互换的方法呢?  答案是:当然有。         这里介绍一种特殊的情况(并不是对所有类型的变量都可以使用):当变量的类型是整形或者字符型的时候,位运算是一个非常有用的工具,尤其是异或运算。异或运算的法则是:x^0=x;x^x=0;
Java中异或运算实现两个整数的交换以及其功能函数实现
今天学习到一种超酷炫的交换两个整数的方法,给各位分享一下。异或运算属于位运算的一种,首先简单介绍一下异或预算的语法规则。 假设a与b为不相等的两个整数。 (1)a^a=0; (2)a^b=0; (3)a^0=a; (4)a^b=b^a,即异或满足交换律。 (5)(a^b)^c=a^(b^c),即异或满足结合律。      接下来介绍一下异或运算实现两个整数交换的原理,同样假设a与b为
Java数值交换(通过异或^来完成)
通过异或完成数值交换,既不用开辟临时变量,也不会影响交换后结果的精度。 class Exchange { public static void main(String[] args) { int m = 11; int n = 6; m = m ^ n; n = m ^ n; m = m ^ n; System.out.println("m="+m+",n="+n
Java笔记:位运算之异或交换数值原理
在学习任何语言时,都会提及到一种容易被大家忽视的运算方法–>位运算       在java中,由于JVM机制的存在,使得位运算存在感更加低,并且,为了程序的可读性,也有程序员不愿意使用位运算进行操作。       但是位运算的优秀性能,作为一个程序员是不得不学习,不管是否会用到,都应学习学习其中的原理及思想,这给我们带来的影响是潜移默化的。       基本位运算符 : & | ^ ~
通过位运算实现数值交换
对于数值的交换操作,通常会采用第三个变量作为中间变量过渡的交换方式。temp=a; a=b; b=temp;使用这种方法,可以保证交换的准确性,但是由于会使用第三个变量,占用了额外的内存空间。那么有没有办法不借助第三个变量实现两个数值的交换呢?可以通过数值相加寄存和位运算两种方式。1、相加寄存:可以将sum=a+b的值暂时寄存到a变量上,由于a=sum-b,所以可以将a值放置到b上,又由于b=su...
异或来交换数原理
用按位 异或来交换数原理是什么比如, int x=7,y=8; x=x^y; y=y^x; x=x^y; 结果x=8,y=7; 哈哈,你写的例子就是利用异或的方法将两个数交换,就如同:int x=7,y=8;  x=x+y;  y=x-y;  x=x-y;道理一样   原理就是数字A异或B两次,就得到A。而B被A异或两次,就得到B。    int x = 7;    int y =