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

位运算——交换两个数

xjtudll4年前 (2022-02-13)技术心得5370

交换两个数
交换两个数相信很多人天天写过,我也相信你每次都会使用一个额外来变量来辅助交换,例如,我们要交换 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#
分享给朋友:

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

简单的谈一谈mklink

最近重装了一次系统,吸取了以前的经验教训,这次对个人资料的转移进行了比较充分的了解。 Vista和Win7本身自带了转移个人文件夹的功能。例如,我的文档,我的图片等都可以在【位置】选项卡里进行迁移。但是这个功能还有缺陷,因为很多软件的配置不能迁移,即appdata(隐藏文件夹)这个文件夹没法利用自带...

Protel99SE PCB重复绘制导线

Protel99SE PCB重复绘制导线

Protel99SE PCB中,若相同Net的两个焊盘,默认是只能画一根导线的;或者说有三个相同Net的焊盘,那么只能将两边连起来,而有一边是无法连接起来的,如果你执意要连接,那么另外一边的导线将会自动去除。有没有什么办法重复绘制导线呢? Tools->Preference,将【Automat...

CorelDraw12启动时图标一闪而过

现象: Coreldraw12启动时,图标一闪而过,无法打开cdr文件。每次启动都如此。 之前一直是可以使用的,在某次强制关机后,就发现软件不能使用了。 临时解决办法: 网上说的各种方法都试过了,都不行。目前只探索出了两种临时可行的办法。 方法一:每次使用coreldraw12前卸载c...

windows环境下TortoiseSVN多仓库(repository)转移合并(修改+转载)

http://www.lilin.net/blog/?p=1346 问题: 两个不同的版本库,放在不同的及其上,各有数个项目在里面,为了统一管理,我现在都集中在一个仓库内,然后用金山快盘,多个机器同步。 回答: 完美包含版本信息,把双库融合,方便管理同步。 自己尝试后发现问题...

水晶报表 如何通过代码隐藏控件

水晶报表 如何通过代码隐藏控件

右击要设置的对象控件,点击“设置对象格式”,调出格式编辑器。点击“抑制显示”后面的编辑图标(见图红框处)。 在代码输入处输入以下代码: if  条件语句    then   true else &n...

如何查看bat文件运行后的显示信息

@echo off 接着中间是批处理的命令! 最后用pause做为结尾,可以是窗口不自动关闭,就可以看到窗口内的运行信息...

发表评论

访客

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