两个int类型数据交换的神级操作
都能想到的操作
- 申请辅助空间进行交换
public void swap(int a,int b){int temp = a;a = b;b = temp;
}
神操作
- 利用异或的运算法则
- 归零律:a ^ a = 0
- 恒等律:b ^ 0 = b
- 交换律:a ^ b = b ^ a
public void swap(int a,int b){a = a ^ b;b = a ^ b;a = a ^ b;
}
- 先看一下运行过程
public static void swap(int a,int b){System.out.println("a::" + a + " " + "b::" + b);a = a ^ b;System.out.println("a::" + a + " " + "b::" + b);b = a ^ b;System.out.println("a::" + a + " " + "b::" + b);a = a ^ b;System.out.println("a::" + a + " " + "b::" + b);
}
public static void main(String[] args) {swap(12,15);
}
- 二进制过程模拟
- 详细分析一下
将a赋给b,那么就需要 b = a ^ b ^ b,那么先a ^ b,再用结果去^b,就可以得到a。现在a等于a ^ b的值,b等于a的值,即a = 3,b=12,现在再用a ^ b就相当于用最开始的a ^ b ^ a即 12 ^ 15 ^ 12,所以就可以将b赋值给a。
两个int类型数据交换的神级操作相关推荐
- pandas操作两列日期类型数据相减并要求结果为整数类型
在 pandas 中,两列日期类型数据相减可以使用减法运算符,结果会得到一个 Timedelta 类型.如果要求结果为整数类型,可以使用其 dt 属性中的 total_seconds 方法,来获取时间 ...
- Int类型数据的序列化以及反序列化(与Java服务器通讯预热)
游戏前端,避免不了的跟服务器通讯,其实游戏的大部分逻辑都在服务端,并不在客户端,所以需要跟服务端通讯"协商"一些逻辑,既然通讯,就少不了的传输,传输之前又要序列化,这篇博客主要讲一 ...
- 实验五:任意输入10个int类型数据,排序输出,再找出素数
一.实验代码如下: 1 /*本程序用来任意输入10个int类型数据,排序输出,再找出素数*/ 2 3 package jiangli; 4 5 import java.util.Scanner; 6 ...
- 并发工具类(四)两个线程进行数据交换的Exchanger
简介 Exchanger(交换者)是一个用于线程间协作的工具类.Exchanger用于进行线程间的数据交换.它提供一个同步点,在这个同步点两个线程可以交换彼此的数据.这两个线程通过exchange方法 ...
- 使用构造方法 重载 Scanner键盘录入的方式,做一个两个int类型的相加 和三个double类型的计算器
import java.util.Scanner; public class Calculator { // 使用构造方法 重载 Scanner键盘录入的方式,做一个两个int类型的相加 和三个dou ...
- Scala语言学习-02-实现十进制转换为二进制(Int类型数据)
一.测试环境 名称 版本 操作系统 Red Hat Enterprise Linux Server release 7.9 (Maipo) CPU 12th Gen Intel® Core™ i7-1 ...
- Arduino 串口数据接收并打印输出int类型数据
Arduino串口接收并打印输出int类型数据 相关文章 <Arduino读取串口接收到的数据并发送数据> <Arduino 基于Stream类的函数详细说明> <Ard ...
- DDE SERVER,DDE CLIENT(动态数据交换) 采用这种技术实现两个程序间数据交换
DDE SERVER,DDE CLIENT(动态数据交换) 采用这种技术实现两个程序间数据交换,工控组态软件里面还在经常使用. 某些时候工控软件读取其它系统的数据或者其他系统要读取工控软件的数据,这种 ...
- 上古时期的 TeX Users 都有哪些当今 TeX Users 无法想象的神级操作?
刘海洋 李阿玲 等 26 人赞同 上古时期的 TeX Users 都有哪些当今 TeX Users 无法想象的神级操作? TeX 在软件中不算最复杂的一类,TeX 代码相比正经的编程语言也没那么复杂. ...
- 斐波纳契回调线_斐波那契回调线(黄金分割线)神级操作-经典
斐波那契回调线(黄金分割线)神级操作-经典 斐波那契回调线,又称黄金分割线.在交易市场上,大多数的技术指标都具有滞后性,导致交易者在使用时不太好掌握.但是,斐波那契回调线具有提前性,能很好的帮助交易者 ...
最新文章
- SSH port forwarding: bind: Cannot assign requested address
- SSM整合shiro框架相关配置文件
- 从零开始入门 K8s | 有状态应用编排 - StatefulSet
- 怎么判断有几个滴定突跃点_不懂怎么判断相亲男的人品?聊这几个话题,让你一眼道破...
- VUE技术栈学习笔记(https://segmentfault.com/a/1190000012530187)
- Android调试工具_ Stetho
- 互联网拥塞控制终极指南
- 网络分裂(network partition)
- JS学习:第一周——NO.1预解释
- matlab离散点包络,求大神指点绘制空间内散点图的包络面,,,散点程序如下
- 多语言调用之 Java调用C/C++
- 单片机通过wifi发送信息到服务器,怎么设计能让单片机通过wifi功能与手机数据交互...
- MapServer教程
- 网卡 eth0,eth1,eth2,lo分别代表是什么 意思
- 【转载】最全的计算广告资料,广告算法工程师入门
- C++(类与对象)是纸老虎吗?
- 论文阅读 | Analysis and comparison of MIMO radar waveforms MIMO雷达波形总结 (TDMA, CDMA, DDMA, FDMA等)
- TCP_NODELAY/SO_LINGER/SO_NOSIGPIPE/MSG_NOSIGNAL设置
- Chrome无法安装axure插件
- python剪切文件_python剪切文件 - osc_42713235的个人空间 - OSCHINA - 中文开源技术交流社区...