博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
异或巧妙实现两变量交换
阅读量:5869 次
发布时间:2019-06-19

本文共 434 字,大约阅读时间需要 1 分钟。

今天在看C语言的位运算时,看到了如下交换a,b两值的方法:

                    a = a^b;

                    b = a^b;

                    a = a^b;

后来想想,真是太神奇了!其实,我们首先知道,对于任意的x满足:

                               x^x == 0;

                               x^0 == x;

那么上面的式子事实上是利用了如上的规则,首先用a保存了a^b的 值,再用b = a ^ b = (a^b)^b=a^b^b=a^(b^b)=a^0=a,这样就成功的实现了b = a;接着又用a = a^b = (a^b)^b(第一个b还是原来的b,而第二个b已经是a的值,因为前面已经实现了交换)= (a^b)^a = a^a^b = 0^b = b,这样就实现了a = b;于是,就成功的实现了a,b两个值的交换。

//异或交换变量简单测试#include "stdio.h"int main(){	int a=12,b=34;	a=a^b;	b=a^b;	a=a^b;	printf("a=%d\nb=%d\n",a,b);	return 0;}

转载地址:http://fxtnx.baihongyu.com/

你可能感兴趣的文章
CentOS Apache配置详解
查看>>
利用VMware搭建MAC OS学习测试环境
查看>>
DHCP多作用域配置案例
查看>>
音频编码介绍
查看>>
私人定制---打造属于自己的linux小系统
查看>>
使用Nginx从零开始搭建基于LNMP架构的电影系统之一_Linux运维
查看>>
python 购物流程脚本
查看>>
Xcode 4.6.2 运行次数为偶数程序崩溃问题
查看>>
RHEL5下Mysql-5.0.87+apache-2.2.14+php-5.2.11的安装笔记
查看>>
RDIFramework.NET 中多表关联查询分页实例
查看>>
考试十次,终获前十(分享信息系统项目管理师考试经历)
查看>>
2.Silverlight动态加载外部XML指定地址的WebService-(动态加载外部XML文件中指定的WebService地址)...
查看>>
mysql数值型字段
查看>>
让自己的firefox永远保持最新
查看>>
一个设置 material design icon的插件工具
查看>>
Distributed Machine Learning Toolkit (DMTK)
查看>>
HighChartS cpu利用率动态图(Java版)
查看>>
继续进发
查看>>
jQuery offset,position,offsetParent,scrollLeft,scrollTop html控件定位 css position
查看>>
8.3. Spring Data JPA
查看>>