不实用额外变量 交换_变量交换:巧用异或运算
异或
今天介绍一个有意思的数学运算:异或。
“异或”通常用于逻辑运算,和它比较相似的是“或”。
或 的运算法则:
- 若 x、y 有一个值为1,则或的结果的1。
异或 的运算法则为:
- 若 x、y 两个值相同,则异或结果为0;
- 若 x、y 两个值不相同,异或结果为1。
异或的性质:一个数与其本身异或等于0,0与任何数异或不改变该数
或、异或运算的程序示例如下:
即:
- x|y = 3|5 = 011 | 101 = 111 = 7
- x^y = 3^5 = 011 ^ 101 = 110 = 6
变量交换:巧用异或运算
在需要交换两个变量的值时,通常可以使用中间变量进行交换外,代码如下图所示:
其实,还可以利用异或,将两个变量进行交换,代码如下图所示:
即:
- tmp = x^y = 3^5 = 011 ^ 101 = 110
- tmp ^ x = 110 ^ 011 = 101 = 5
- tmp ^ y = 110 ^ 101 = 011 = 3
不实用额外变量 交换_变量交换:巧用异或运算相关推荐
- 在python中可以使用if作为变量名_变量,注释,缩进,细数Python优雅风 | Python基础连载(二)...
开篇 在之后的几期文章中,你将会陆续学习到Python的六个标准数据类型 不过在此之前,有一些先导内容需要掌握,所以这一期就先来介绍一下这些内容. 文章首发于微信公众号:我将在南极找寻你.专注干货分享 ...
- 深入理解异或运算 xor 的含义——再探不使用加减乘除实现加法运算、不使用额外空间交换两个变量的值
今天看到感知机,了解感知机无法解决异或问题.然后深入了解了一下异或,整理如下: 直观上来说,异或运算就是如果两个数字(0或者1)相同,则输出为0; 如果两个数字(0或者1)不相同,就输出为1.数学上比 ...
- python写整数逆位运算_简单了解python的一些位运算技巧
前言 位运算的性能大家想必是清楚的,效率绝对高.相信爱好源码的同学,在学习阅读源码的过程中会发现不少源码使用了位运算.但是为啥在实际编程过程中应用少呢?想必最大的原因,是较为难懂.不过,在面试的过程中 ...
- 【交换变量】三种交换变量的方式:中间变量法,加减法,异或运算法
这篇文章记录一下,交换变量的三种常见方式,分别是:中间变量法,加减法,异或运算法. 目录 (1)中间变量法 (2)加减法 (3)异或运算法 (1)中间变量法 算法思想: 声明一个额外的临时变量. 临时 ...
- C语言写一函数交换两变量的值
C语言写一函数交换两变量的值 #include <stdio.h> void swap(int *p1, int *p2); // 形参,只声明 int main(){int a=5, b ...
- 没有第三个变量的前提下交换两个变量_JavaScript 交换值的方法,你能想到几种?
早期之前,在 JS 中交换值,我们主要还是使用临时变量.ES6 之后,我们可以使用展开运算符号来交换变量,除了这两种方式,你还能想到哪些呢? 本文主要介绍 交换变量的 10 种方法,请过目 1. 使用 ...
- php 交换,php变量交换
// 1,针对数字 $a = $a+$b; $b = $a-$b; $a = $a-$b; // 2,使用list结构 $a = 'a'; $b = 'b'; var_dump($a,$b); lis ...
- 在不借助第三方变量情况下实现两个变量的交换(借助于异或运算)
下面首先来看一个问题. 假设存在两个int型变量a和b,那么如何实现两个变量值的交换呢. 通常我们的做法,也是最容易想到的做法就是通过定义一个第三方变量,然后借助于该变量来实现变量值的交换. 方法一( ...
- 交换两变量的值,不使用中间变量
前言: 一般情况下,我们交换两个变量的值都会使用一个中间变量,这样的程序也更容易理解. 程序源码: 使用中间变量时,交换两个变量的值: #include <stdio.h>int main ...
最新文章
- C#中使用 SendMessage 向非顶端窗体发送组合键
- matplotlib 一张图多个图,如何在Matplotlib中绘制同一个图上的多个函数?
- Spring Cloud比较好的博文地址
- sarama-cluster之panic: non-positive interval for NewTicker 问题
- 1-100以内的数求和,求出当和第一次大于20的当前数
- 服务器返回一个无效的JSON string,处理
- 大规模领域词汇库项目DomainWordsDict:涵盖68个领域、共计916万的词汇库资源开放
- 美国500万个工作已被机器取代!超级AI会让人类永生还是灭亡?
- :https web服务器ssl认证项目,Https自定义证书引入问题(2)
- matlab中设置拟合初值,如何确定自定义函数拟合时的参数初值?
- linux临时网络配置
- [Poi2000]公共串 hustoj2797
- github安装python包_使用PyCharm从GitHub安装Python包
- 使用3CDaemon软件搭建FTP来上传/下载交换机文件文件
- CactiEZ V10.1 中文版 Cacti中文 安装教程cactiezv10.iso
- 在python中,计算Sum = m + mm + mmm +mmmm+.....+mmmmm.....,输入两个数m,n。m的位数累加到n的值,列出算式并计算出结果:
- 高防服务器,可以防多大的ddos攻击
- 去中心化金融项目 Bloqboard FAQ
- 申诉解决TeamViewer免费个人版被误判为商业使用
- web端腾讯PAG初体验