当前位置:首页 > 技术心得 > 正文内容

位运算——交换两个数

xjtudll5年前 (2022-02-13)技术心得6920

交换两个数
交换两个数相信很多人天天写过,我也相信你每次都会使用一个额外来变量来辅助交换,例如,我们要交换 x 与 y 值,传统代码如下
int tmp = x;
x = y;
y = tmp;
这样写有问题吗?没问题,通俗易懂,万一哪天有人要为难你,**不允许你使用额外的辅助变量来完成交换呢?**你还别说,有人面试确实被问过,这个时候,位运算大法就来了。代码如下:
x = x ^ y // (1)
y = x ^ y // (2)
x = x ^ y // (3)
解释如下:
把(1)中的 x 带入 (2)中的 x,有
y = x^y = (xy)y = x(yy) = x^0 = x。 x 的值成功赋给了 y。
对于(3),推导如下:
x = x^y = (xy)x = (xx)y = 0^y = y。

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/633/

标签: CC#
分享给朋友:

“位运算——交换两个数” 的相关文章

如何释放由RingtoneManage实例化的MediaPlayer

参考资料:http://stackoverflow.com/questions/15450255/how-to-release-the-mediaplayer-instantiated-by-ringtonemanager 为了获取android铃声的名称,使用了以下代码 //根据铃声地址获取铃声的...

网址后面多了一串字符串?jdfwkey

最近一段时间,每天第一次打开自己网站的时候,网址后面老会自动加一串字符串?jdfwkey,很奇怪,而且看起来就跟广告页面网址一样。发现这个问题后,立马联系了客服,客服说是打开了硬件防火墙,防DDOS攻击的。网上搜索了一遍,发现好多人出现过这种情况,大家的意见是:1、影响网站收录。2、来源于搜索引擎的...

金蝶K3:直接SQL报表中进行核算项目数据授权控制的方法

--【第一步】: --根据核算项目类别ID,查询到对应核算项目的数据授权表及查看、修改、删除的权限字段名和权限掩码 --例如查出客户的数据授权表为Access_t_Organization --几乎所有的核算项目的查看、修改、删除的权限字段名和权限掩码都是以下这样: -...

php环境如何测试是否配置成功

<?php phpinfo(); ?> 编写一个PHP文件(注意:是PHP文件,不是txt文件),里面内容如上。 浏览器里访问这个文件。如果能看到配置信息,表明PHP环境配置成功。...

Windows Server 2008 R2上搭建ShadowSocks服务

Shadowsocks是一个轻量级隧道Socks5代理,可加密网络通道。 1、下载nodejs     首先要进入https://nodejs.org/,点击页面上的INSTALL安装相对应的node环境。 2、安装nodejs   &...

Word删除空格、空行、超链接宏

1、删除空格和空行 此宏的主要功能是删除空格,并将软回车替换为硬回车 Sub 删除空格和空行() ' ' 删除空格和空行 宏 ' '    '英文单词与英文单词之间保留一个半角空格,其他的所有空格均删除     myReplaceExecute Se...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。