两数交换的三种方法

目录

1.创建临时变量进行交换

2.通过两数相加或相减来进行交换

3.使用^异或操作符来进行交换



 

1.创建临时变量进行交换

int main() {
	int a = 3;
	int b = 5;
	int tmp = 0;
	printf("%d %d\n", a, b);
	tmp = a;
	a = b;
	b = tmp;
	printf("%d %d\n", a, b);
	return 0;
}

2.通过两数相加或相减来进行交换

int main() {
	int a = 3;
	int b = 5;
	int tmp = 0;
	printf("%d %d\n", a, b);
	a = a + b;
	b = a - b;
	a = a - b;
	printf("%d %d\n", a, b);
	return 0;
}

但是这种方法存在一定的弊端,当两个数很大时,可能a+b超出了该类型的大小上限,导致交换失败。

3.使用^异或操作符来进行交换

首先我们先要知道什么是异或操作符,如果不清楚可以看一下我上一节的知识:操作符详解(1)

然后我们先来看几个问题:

a^a=

a^0=

我们知道,异或是将每个二进制位进行比较,相同时为0,不同时为1,当一个数与它本身进行异或操作时,每一位都相同,所以值等于0.

当一个数与0进行异或操作时,得到的值为它本身。

所以,我们可以通过异或操作符来交换两个数字 

int main() {
	int a = 3;
	int b = 5;
	int tmp = 0;
	printf("%d %d\n", a, b);
	a = a ^ b;
	b = a ^ b;
	a = a ^ b;
	printf("%d %d\n", a, b);
	return 0;
}

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
20世纪80年代,连接分离的局域网段的一种简单廉价的方法就是采用网桥,虽然路由器也被用来创建结构及增加功能,但它往往使系统变得复杂和昂贵。网络管理员们过去一直在努力解决如何应用这种新的路由技术来设计最优化的网络,以及选择何种路由方法。另外,一些网桥销售业绩很好的商家没有及时响应对路由器的需求而失去了可观的市场份额。 当前在第二层(L2)交换和第三层(L3)交换的发展过程中出现了与此相类似的现象。从技术的角度来看,L2交换与网桥有着相似的特点,即价格低廉和易于使用。在最近三年中,L2交换市场从零发展为价值数十亿美元。在网络中路由功能仍然是必需的,L3交换承诺能够满足这些需求,并且该方式比过去的路由器更为快捷、简单和廉价。 我们相信业界将会像过去努力推广路由器一样去推广第三层交换,为此网络专业人员将会面临以下四个问题: 1) 争取对已有网络进行升级的批准和资金支持通常比最初建设时要困难得多。 2) 存在几种应用L3交换来设计网络的方法。 3) 厂家采用多种方法来实现L3交换,而通常的规律是:市场上提供的多种选择使买方感到迷惑,结果他们往往没有买到最新的产品。 4) 人们通常会对新技术的引入持怀疑态度,业界已有太多曾经被大肆宣扬的技术最终被市场所淘汰的例子(例如,100VG-AnyLAN和ATM-25)。 只要潜在的买主仍在探索之中,厂家就不可能最后成功。例如,如果网络专业人员不能区分各种L3交换方法,不设计采用L3交换产品的网络,不针对网络管理进行升级,厂家就不可能向他们出售产品。另外我们也看到,各个厂家往往仅专注于自己的实现方式,而没有意识到他们有必要更广泛地了解所处的环境,包括网络管理员的需求以及竞争对手所提供的实现方式。 本书的目的是扫除在引入新技术特别是第三层交换时人们认识上的一些障碍。我们将指导购买者评估第三层交换是否适合他们的特定情形,我们还将详细介绍这一技术的细节及一些厂家的实现方法及其产品。对于厂家来说,本书将有助于他们更好地理解其潜在的买主在购买和部署第三层交换产品时所面临的问题,以及如何将自己的产品在更广泛的市场中定位。 本书内容覆盖范围 当今社会的特点是“以信息为基础”或者是某些人所说的“以知识为基础”,我们也明显地看到当今经济的发展趋势是一种“全球性”的经济而非区域性的或国家范围内的经济。由于“时间就是金钱”的意识和各种商业压力,我们越来越迫切地要求通信系统能为我们提供对关键信息及时获取的能力。对于许多商业机构和组织来说,其业务和竞争力的核心已经是计算机和网络。从自动化工厂到电子商店,从企业资源规划(ERP)到在线预订,从数字图书馆到个人主页,可靠而高效的网络正日益成为我们工作和生活的基础。“拥有越多,奢望越多”已经变为“拥有越多,需求越多”,没有任何一家商业机构和组织希望他们的计算机网络在下一年度或以后缩小规模。让更有经验的人员操作更强大的计算机以获得更多简单而先进的应用一直是计算机容量、性能和可靠性不断发展的持续动力。关于这方面的内容将在第2、3和8章中更进一步地讨论。 不知您是否在这样的环境中工作过:新技术不是被商业需求所“拉动”,而是被其拥护者所“推动”(有时为了他们自身的原因);公司中产品的开发仅仅是受工程效益的驱动而没有考虑其市场潜力;某人拥有配备最新硬件和软件的计算机不是因为绝对需要而仅仅是因为别人已经拥有。如果是的话,那么您将深刻地领悟到技术的作用(不管是正面的还是反面的)通常是如何被夸大其辞。字处理工具软件没有真正夺去许多秘书的工作,自动柜员机没有消除对传统银行机构的需要,电视和计算机也没有对我们教育大多数学生的方式产生根本性的革命,大多数人只知道使用他们的应用软件的一小部分功能。计算和网络更是在其高承诺和低交付方面受到普遍指责。但还是有一些众所周知的取得巨大成功的典范,如美国医院供应系统、美国航空公司和Frito-Lay公司。本书讨论了与新技术相关的诸多方面(关于第三层交换的深层讨论在第4~6章中给出),您可以发现第2章中列出的一些标准在对新技术进行初步评估时是非常有用的(见表2-1)。 第7章针对Strategic网络公司提供的案例研究给出了几个应用第三层交换产品的网络设计方案。该案例也许与您自己或您客户的环境并不相同,但您将发现第2章中列出的评估新技术适合程度的过程(见表2-1)可用于确定该案例中哪一部分符合您的情形。将这些步骤规范化以及将网络风险承担者牵涉进来有助于减少在事关企业能否成功运作的网络中引进新技术所带来的风险。 最后,第9章进行了综合分析,为要成功部署或销售第三层交换产品必须注意的10个最关键问题给出了我们的建议,并指出其中哪些具有更广泛的通用性。如果可能,其中的某些观点能帮助读者在应用第三层交换技术以及将来应用其他新技术时最大限度地降低风险。 阅读指导 本书主要面向那些正试图升级其机构局域网基础结构的人,读者将在下述几方面受益: ?制定应用于第三层交换以及其他任何新技术的成功评估和部署中的方法和评估标准。 ?有关第三层交换技术的深入解释。 ?关于第三层交换技术针对三个常见网络问题的不同解决方法的建议,这三个问题分别是:优化网络主干、优化服务器以及从FDDI结构移植。 本书对于其任务就是把他们的产品进行市场定位的人员也将非常有用,本书将帮助他们分析客户环境中的机遇和挑战:目前的状况,驱动或阻碍改变的因素,使用何种标准来评估第三层交换技术;此外,本书也能够为他们提供在市场中定位自己的产品时所需的背景知识。 应当说有了注意事项,才算得上一个完整的介绍。计算机和网络技术变化的步伐似乎不会放慢,尽管我们很想知道它是否会一直加速。因此很重要的一点是应当看到,本书所介绍的产品细节乃至关于第三层交换技术的信息从某种意义上说也许只在相对短暂的一段时间内是准确的。技术本身会发展,产品也会改进或被新一代产品所取代。然而我们相信,书中所提供的评估新技术的方法将一直有效,您可以在厂家开始讨论他们“第四层交换”的解决方案时进行尝试。 另外有必要指出的是,我们从来没有试图在本书中覆盖第三层交换的所有解决方案和产品。我们所选择的在市场中居领导地位的主要厂家及一些新兴公司的令人感兴趣的产品也许并不与所有人的选择一致,但我们确实认为所做的选择有相当广泛的代表性。如果您是一个潜在的买主,我们的分析将有助于您评估其他产品。对于我们在书中未做介绍的厂家,从本书中也可以大略地了解到我们认为谁会是您当前主要的竞争对手。 虽然本书介绍的内容是一项特定的技术,但我们并不认为它是一本技术书籍。对于某些人来说,也许我们提供的技术细节比他们想象的更多;而对于另外一些人来说,也许我们介绍的技术细节还不够。我们的目标在于提供如何看待第三层交换以及评估它和其他新技术的框架。这是一项富有挑战性的工作,我们将请您来分享我们在此所奉献的热情和关注。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清扰077

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值