交换两个整数值,不用临时变量
2013-05-21 11:41
260 查看
交换两个值,不用临时变量?我们通过位运算中的异或来实现。 //测试代码为C语言代码
前置知识:
1.一个整数自己跟自己异或,结果为0 //因为异或的法则为,相同为0,不同为1,注意这里所说的都是二进制位。
2.任意一个整数跟0异或,结果为本身。 //因为1异或0得1,0异或0,得0,所以1还是1,0还是0,没发生变化。
------------------------------------------------------------------------------------------------------
测试代码如下:
//效果截图如下:
![](http://img.blog.csdn.net/20130521112611294)
---------------------------------------------------------------------------------------------------------------------------------
分析下a和b发生交换的原因:
根据以上代码不难得出以下表达式:
1. b=(a^b)^b=a^b^b=a
2. a=(a^b)^[(a^b)^b]=a^b^[a^b^b]=a^b^a^b^b=a^a^b^b^b=b
根据前面说的前置知识,不难明白a和b,为什么发生交换了。
-----------------------------------------------------------------------------------------------------------------------------------
![](http://r.qzone.qq.com/cgi-bin/cgi_get_user_pic?openid=00000000000000000000000005492D01&pic=1.jpg&key=14c00103d64a28b46e3a7211892ffbee)
您的十分满意是我追求的宗旨。
您的一点建议是我后续的动力。
前置知识:
1.一个整数自己跟自己异或,结果为0 //因为异或的法则为,相同为0,不同为1,注意这里所说的都是二进制位。
2.任意一个整数跟0异或,结果为本身。 //因为1异或0得1,0异或0,得0,所以1还是1,0还是0,没发生变化。
------------------------------------------------------------------------------------------------------
测试代码如下:
int main(int argc, char* argv[]) { int a=575,b=667; a=a^b; b=a^b; a=a^b; printf("a=%d b=%d \n",a,b); getchar(); return 0; }-----------------------------------------------------------------------------------------------------------------------------------
//效果截图如下:
---------------------------------------------------------------------------------------------------------------------------------
分析下a和b发生交换的原因:
根据以上代码不难得出以下表达式:
1. b=(a^b)^b=a^b^b=a
2. a=(a^b)^[(a^b)^b]=a^b^[a^b^b]=a^b^a^b^b=a^a^b^b^b=b
根据前面说的前置知识,不难明白a和b,为什么发生交换了。
-----------------------------------------------------------------------------------------------------------------------------------
![](http://r.qzone.qq.com/cgi-bin/cgi_get_user_pic?openid=00000000000000000000000005492D01&pic=1.jpg&key=14c00103d64a28b46e3a7211892ffbee)
您的十分满意是我追求的宗旨。
您的一点建议是我后续的动力。
相关文章推荐
- 交换两个整数值,不用临时变量
- 不使用临时变量交换两个整数
- 不使用临时变量交换两个整数
- 不用第三变量交换两个整数
- 不用临时变量,交换两个变量的值
- 不用临时变量,只用11个字符交换两个变量的值——窥视C#编译原理的冰山一角
- 不用额外变量交换两个整数的值
- 不用临时变量,只用11个字符交换两个变量的值——窥视C#编译原理的冰山一角
- 怎样不用临时变量而交换两个值?
- 不用临时变量实现两个变量交换
- 从“交换两个变量而不用临时变量”谈起
- 不用临时变量交换两个变量的值——函数对象
- 不用临时变量交换两个单精度浮点数的值
- 不用额外变量交换两个整数的值
- 不用临时变量交换两个变量的值
- 怎样不用临时变量而交换两个变量的值?——看一中文编程语言中的“完美”一例
- C++ 不用临时变量交换两个变量的值——函数对象
- 不用临时变量交换两个变量的值
- 不用辅助变量交换两个整数的值。真的很简单吗?
- 交换两个数,不用临时变量