这个是Cracking the code interview的题目,如一般的交换函数我们都知道:
void mySwap(int &a, int &b)
{
int t = b;
b = a;
a = t;
}
但是如何实现这个函数,不使用t呢?
有两种方法,第一种方法,利用减法实现:
void swapWithoutTemp(int &a, int &b)
{
a = a-b;
b = a+b;
a = b-a;
}
这很好理解,难理解的是第二种方法,利用异或运算^位操作实现:
void swapBitOp(int &a, int &b)
{
a = a^b;
b = a^b;
a = a^b;
}
理解起来还是有点难度。
那是利用了异或运算的特征,就是:
任何数与1异或都相当于取反操作,例如1^1=0; 0^1=1
任何数与0异或都相当于保留操作:1^0 = 1; 0^0 = 0;
理解方法:
由特殊推导一般,就是假设两个数都是一位二进制数,那么就算他们是多位二进制数的情况也是一样的。
假如b为1,就是对a做取反操作
a = a^b;就是对a取反了a = !a;
b = a^b; 就相当于!!a对a作了两次取反操作,那么就肯定等于a了。
a = a^b;就是 !a ^ a,那么就肯定等于1了.因为b=1的所以就是a = b了。
假如b为0,就是对a做保留操作
a = a^b;就是对a保留操作a = a;
b = a^b; 再次对a作保留操作,那么就肯定等于a了。
a = a^b;就是a ^ a,那么就肯定等于0了.因为b=0的所以就是a = b了。
两个关键点:
1 知道异或运算的特征
2 从一般推导到特殊
分享到:
相关推荐
我们提出了一种与局部费米子存在有关的孤子之间交换相互作用... 我们调查了局部费米离子模式之间相互作用交换相互作用的额外影响,并证明了由无电荷费米离子介导的强吸引相互作用所界定的稳定的磁天文离子系统的存在。
利用dijet角分布,对s = 8 TeV的质子-质子碰撞中的夸克接触相互作用和额外的空间尺度进行了搜索。 该搜索基于与CMS检测器在CERN LHC处收集到的19.7 fb -1的综合亮度对应的数据集。 发现Dijet角分布与包括电弱校正的...
四川大学计算机学院-数据结构与算法分析高分实验报告-引用数使用空间表法广义表存储结构.rar 都是自己非常认真完成的,每一个要点都实现到位,还额外实现了创新内容。 最后得到的分数也很好
在投入运行之后, 要经常监视系统, 如果看到分页空间的利用率从来都没有接近过百分之五十, 就不需要添加额外的空间. Oracle为AIX提供的文档推荐设置交换空间为RAM大小的一半加上4GB, 但是上限为32GB.
这个算法的主要目的是交换字符串中的大写字母和小写字母。以下是算法的详细描述: 定义一个函数swapCase,它接受一个字符串引用作为参数...空间复杂度是O(1),因为算法只需要常数级别的额外空间来存储变量和函数调用。
尽管预测的异常希格斯相互作用与规范–希格斯统一中的相互作用非常相似,但在尺寸解构的情况下,即使我们不引入通过双折实现的手性费米子的整体质量项,也存在异常。 规范-希格斯统一的情况。 这又意味着异常会在...
冒泡排序:使用了两层循环,外层循环用于控制排序的轮数,内层循环用于比较相邻元素并进行交换。在每一轮的比较中,如果前一个元素大于后一个元素,则进行交换。通过多轮的比较和交换,实现将最大的元素逐渐“冒泡”...
# 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表 # 示例: # 给定 1->2->3->4, 你应该返回 2->1->...# 你的算法只能使用常数的额外空间。 # 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换
内容概要: 本文将介绍如何使用@FeignClient注解实现不依赖Eureka进行服务调用。...综上所述,使用@FeignClient注解实现不使用Eureka的服务调用可以提供更大的灵活性和可配置性,但也需要额外的配置和维护工作。
进行了在双电子和dimuon最终状态中非共振新现象的搜索,这些新现象源自接触相互作用或较大的额外空间尺寸。 使用由ATLAS探测器记录的LHC 2012质子-质子碰撞数据集,对应于s = 8 TeV时的20 fb -1。 在两种搜索中,双...
对于任何维数的通用翘曲积时空,都得出了新的奇异性定理。 主要目的是分析(紧凑或较大)额外尺寸对动力扰动的稳定性。 为此,我们将翘曲产品的基础假定为我们可见的4维世界,而额外的维定义了纤维,因此我们考虑了...
结果表明,对于准玻尔轨道,辐射频率的离散性和电子的角动量是由于运动的周期性所致,在投影到所观测的三维空间中,都允许通过惯性运动,并且在额外的空间。 精细的结构常数表示为总空间的互补子空间和观察到的子...
它使用 Nexus 5 的硬件步数检测传感器,即使不使用任何计步器应用程序,它也已经在运行。因此,该应用程序不会消耗任何额外的电池。与其他计步器应用程序不同,此应用程序不会跟踪您的运动或您的位置,因此它不需要...
研究的基础是在6维空间中起作用的更高的导数重力,该研究允许获得稳定的解决方案而无需引入任何种类的物质。 解决方案的稳定性通过空间无限性之间的渐近行为之间的差异来维持。 对于外部观察者来说,这样的漏斗看...
。。。
鸣谢 序言 概览 寻找适合你的评估共享计划 建立共享关系 评估交换平台的能力 建立信任 参与者匿名保护以及数据清除(Data Sanitization) 开放标准 自动化 规模化分析 同业组织小团体(enclaves) ...附录 B额外资源
1、demo实现了音频流播放(边下边播)、解码、转码、... 3、本demo只对边下边播进行了非常粗略的控制,就是先让音频下载2秒才开始播放音频,并假定播放的速度低于下载速度,精细控制会使用大量额外代码作为demo没有必要。
2.多线程之间为更方便的实现数据共享采用了共享相同内存地址空间的形式,并且是并发运行,导致多个线程可能会同时访问或修改其他线程正在使用的变量值,导致安全性,同时如果线程之间相互等待对方拥有的锁,会出现...
摘要我们表明,所观察到的夸克/轻子质量层次可以在具有点相互作用的区间额外维上动态实现。 在我们的模型中,点相互作用的位置在控制夸克/轻子质量层次中起着至关重要的作用,并由卡西米尔能量的最小化确定。 通过...