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

位运算——交换两个数

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

交换两个数
交换两个数相信很多人天天写过,我也相信你每次都会使用一个额外来变量来辅助交换,例如,我们要交换 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://www.xjtudll.cn/Exp/633/

标签: CC#
分享给朋友:

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

Android:open failed: EACCES (Permission denied) -

参考资料:http://blog.csdn.net/zxkevin1989/article/details/7464550/ 问题: 从SD卡中读取文件,提示open failed: EACCES (Permission denied) - 原因: 从提示基本就能看出是权限问题了,读取SD卡文件需要...

BIN转BCD

BCD代码,Binary-Coded Decimal‎,是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制数,使二进制和十进制之间的转换得以快捷的进行。常见BCD编码有8421 BCD码,2421 BCD码,余3码。我们要说的就是8421 BCD码与二进...

布丁软件引起的桌面闪烁

问题描述: 进入桌面后,屏幕闪烁。 查找到系统日志: 错误应用程序名称: explorer.exe,版本: 6.3.9600.18231,时间戳: 0x56b8c9f1 错误模块名称: PDZipMenu64.dll,版本: 1.4.3.11014,时间戳: 0x5da4349a 异常代码: 0xc...

ios开发者帐号扣费成功 但是还是提示快到期??

ios开发者帐号扣费成功 但是还是提示快到期??

公司的ios开发者帐号快到期了,在apple developer(developer.apple.com),资料填写完毕后,按照提示,说可能要等24小时。 过了一段时间,信用卡收到了扣费通知,想着扣费成功了,帐号应该就是续费成功了,就没管了。加上那几天比较忙,就没去看邮件(gmail,访问太麻烦),...

VS2010 HelpLibrary

VS2010 HelpLibrary

1、VS2010 HelpLibrary路径更改 找到helplibmanager.exe.config (C:\Program Files\Microsoft Help Viewer\v1.0\),打开 helplibmanager.exe.config (用记事本或其他文本编辑软件),将 key...

Xcode:如何在plist中换行

参考资料:http://91r.net/ask/2035567.html 问题: 如何在plist中换行,尝试在末尾加入\n发现无效 解决办法: 1、自编代码将"\n"替换为"\\n" NSString *newString = [oldString stri...

发表评论

访客

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