swap(a,b)异或骚操作方法

众所周知,平日里我们如果要交换两个变量的时候,通常都是

void swap(int a, int b)
{
    int temp = a;
    a = b;
    b = temp;
}

通过创建temp变量,保存其中一个的值,再交换两个变量的值

那么,有木有什么操作是更骚的呢

void swap(int a, int b)
{
    a = a ^ b;
    b = a ^ b;
    a = a ^ b;
}

大家可能看不懂,我来解释一下。

大家小学二年级都学过 ^ 异或运算,异或运算中的几个常用的性质有:

0x01. 0异或任何数,都是该数;

0x02.任何数与自己异或结果都是0;

0x03.异或运算有交换律和结合律。

那么,

第一行,a最终值为a^b,b最终值为b。
第二行,a最终值为a^b,b最终值为a^b^b=a。
第三行,a最终值为a^b^a=a^a^b=b,b最终值为a。

是不是很骚,你get了吗

Original: https://www.cnblogs.com/chr1ce/p/16593284.html
Author: chris599
Title: swap(a,b)异或骚操作方法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/711750/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • HelloWorld

    新的起点,新的征程,未来可期! posted @2022-07-27 10:57 旅程~ 阅读(10 ) 评论() 编辑 Original: https://www.cnblogs…

    技术杂谈 2023年7月24日
    097
  • 用w32tm设置服务器时间同步

    服务器时间同步是一个容易被忽视的问题,但在企业级应用环境中,不同服务器之间的时间差很可能引发应用系统问题。Windows提供的w32tm程序可以用来设置时间同步服务器,其用法如下:…

    技术杂谈 2023年5月31日
    0123
  • 怎么计算Oracle的表一条记录占用空间的大小

    如何计算Oracle 的表一条记录占用空间的大小?如何计算Oracle 的表记录占用空间的大小?是把所有字段的大小都加起来吗?varchar(256),char,number算几个…

    技术杂谈 2023年5月31日
    0126
  • docker安装

    本文的安装系统环境:centos7.5 1.如果系统默认安装旧版的docker,可以先删除 yum -y remove docker docker-common container…

    技术杂谈 2023年7月10日
    091
  • 更安全的rm命令,保护重要数据

    更安全的rm命令,保护重要数据 网上流传的安全的rm,几乎都是提供一个rm的”垃圾”回收站,在服务器环境上来说,这实非良方。 我想,提供一个安全的rm去保护…

    技术杂谈 2023年5月31日
    0105
  • 多级缓存-OpenResty获取请求参数

    OpenResty提供了各种API用来获取不同类型的请求参数: 在查询商品信息的请求中,通过路径占位符的方式,传递了商品id到后台: 需求:在OpenResty中接收这个请求,并获…

    技术杂谈 2023年5月31日
    0116
  • Java — 注解

    Java 注解(Annotation)又称为 Java 标注,是 Java5 开始支持加入源代码的特殊语法元数据。 Java 语言中的类、方法、变量、参数和包等都可以被标注。 Ja…

    技术杂谈 2023年7月11日
    087
  • UML图

    依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类…

    技术杂谈 2023年5月31日
    0117
  • Java案例——数组元素的移动及换位

    需求一:给出一个固定数组int[] array = {1, 3, 6, 8, 7, 9, 4, 10},要求将某一元素放到某一元素后,例如将1放到6后,输出结果为array = {…

    技术杂谈 2023年7月24日
    095
  • Codeforces Round #748 (Div. 3)

    Codeforces Round #748 (Div. 3) A. Elections 思路分析: 令当前值比最大值大即可,如果最大值是它自己,就输出(0) 代码 #include…

    技术杂谈 2023年7月24日
    079
  • LAMP 架构介绍及环境搭建

    1、LAMP 架构介绍及环境搭建 1.LAMP分别代表什么? L代表服务器操作系统使用Linux A代表网站服务使用的是Apache软件基金会中的httpd软件 M代表网站后台使用…

    技术杂谈 2023年6月21日
    0121
  • 【赵渝强】使用二进制包部署Kubernetes集群

    在一些企业的私有环境中可能无法连接外部的网络。如果要在这样的环境中部署Kubernetes集群,可以采集Kubernetes离线安装的方式进行部署。即:使用二进制安装包部署Kube…

    技术杂谈 2023年7月24日
    0117
  • 网络安全中常用浏览器插件、拓展

    引言 现在的火狐、Edge( Chromium内核)、Chrome等浏览器带有插件、拓展(Plugin)的功能。这些插件中有的可以过滤广告,有的提供便捷的翻译,有的提供JavaSc…

    技术杂谈 2023年6月21日
    0109
  • 单点登录(SSO)

    1 基础知识 单点登录机制(SSO)允许用户登录应用程序一次,并访问所有相关的系统,而不需要单独登录它们。 由于 SSO,用户只需登录一次即可使用服务,并自动登录到所有相关应用程序…

    技术杂谈 2023年7月23日
    0114
  • gnomeshell扩展命令行开启和关闭

    #关闭gnome-shell-extension-tool -d 扩展名 #开启gnome-shell-extension-tool -e 扩展名 例如:gnome-shell-e…

    技术杂谈 2023年7月24日
    096
  • Mysql异地多活数据双向同步-CloudCanal实战

    异地多活是一项系统性工作,包含 web 层、应用服务层、数据层的流量分配和同步。 数据层的双向同步是整个方案基础,CloudCanal 在 MySQL 技术点 双向同步中, 暂时无…

    技术杂谈 2023年7月24日
    088
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球