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

位运算——交换两个数

xjtudll3年前 (2022-02-13)技术心得2480

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

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

NSToolBar-设定初始化选中的item

NSToolBar-设定初始化选中的item

参考资料: http://stackoverflow.com/questions/11004072/nstoolbar-how-do-i-initialise-with-a-selected-item 使用方法: -setSelectedItemIdentifier 举例如下: [self.win...

eclipse显示行号及字体设置

eclipse显示行号及字体设置

1 编辑器显示行号 Windows -> Preferences -> General -> Editors -> Text Editors -> Show line numbers(勾选) 2 显示字体设置 Windows -> Preferences -&g...

美如画R4固件更新方法及下载地址

    去年购入了一台美如画R4 Wifi版本,用到今年,遥控器挂了,按了没反应,无奈在某宝上买了美如画R4的遥控器,买回来,发现用不了。查了查,才知道,遥控器有两个版本的,两个色键和四个色键的,我买的是四个色键的,而原配是两个色键的。那么,不能用了么?网上搜了搜,只要...

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

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

OKI单片机——ML610Q4XX 看门狗

OKI单片机——ML610Q4XX 看门狗

/***********************************************/ * @brief 看门狗初始化 * @details * @param[in] Time :看门狗复位时间 /********************************************...

服务端把客户端几次发的数据一起接受了,是怎么回事?

服务端把客户端几次发的数据一起接受了,是怎么回事?

  客户端是android,服务端是c#,手机监听手指一动就把手指所在的那个点的位置发给服务端,服务端死循环接收,android可以保证一次是给服务端发一条数据,但是服务端把几次发的数据一起接受了 原因: 因为TCP是流式数据,没有次的概念。看题主的数据,结构本身比较简单,可以试试利用...

发表评论

访客

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