异或

今天介绍一个有意思的数学运算:异或

“异或”通常用于逻辑运算,和它比较相似的是“或”。

的运算法则:

  • 若 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

不实用额外变量 交换_变量交换:巧用异或运算相关推荐

  1. 在python中可以使用if作为变量名_变量,注释,缩进,细数Python优雅风 | Python基础连载(二)...

    开篇 在之后的几期文章中,你将会陆续学习到Python的六个标准数据类型 不过在此之前,有一些先导内容需要掌握,所以这一期就先来介绍一下这些内容. 文章首发于微信公众号:我将在南极找寻你.专注干货分享 ...

  2. 深入理解异或运算 xor 的含义——再探不使用加减乘除实现加法运算、不使用额外空间交换两个变量的值

    今天看到感知机,了解感知机无法解决异或问题.然后深入了解了一下异或,整理如下: 直观上来说,异或运算就是如果两个数字(0或者1)相同,则输出为0; 如果两个数字(0或者1)不相同,就输出为1.数学上比 ...

  3. python写整数逆位运算_简单了解python的一些位运算技巧

    前言 位运算的性能大家想必是清楚的,效率绝对高.相信爱好源码的同学,在学习阅读源码的过程中会发现不少源码使用了位运算.但是为啥在实际编程过程中应用少呢?想必最大的原因,是较为难懂.不过,在面试的过程中 ...

  4. 【交换变量】三种交换变量的方式:中间变量法,加减法,异或运算法

    这篇文章记录一下,交换变量的三种常见方式,分别是:中间变量法,加减法,异或运算法. 目录 (1)中间变量法 (2)加减法 (3)异或运算法 (1)中间变量法 算法思想: 声明一个额外的临时变量. 临时 ...

  5. C语言写一函数交换两变量的值

    C语言写一函数交换两变量的值 #include <stdio.h> void swap(int *p1, int *p2); // 形参,只声明 int main(){int a=5, b ...

  6. 没有第三个变量的前提下交换两个变量_JavaScript 交换值的方法,你能想到几种?

    早期之前,在 JS 中交换值,我们主要还是使用临时变量.ES6 之后,我们可以使用展开运算符号来交换变量,除了这两种方式,你还能想到哪些呢? 本文主要介绍 交换变量的 10 种方法,请过目 1. 使用 ...

  7. php 交换,php变量交换

    // 1,针对数字 $a = $a+$b; $b = $a-$b; $a = $a-$b; // 2,使用list结构 $a = 'a'; $b = 'b'; var_dump($a,$b); lis ...

  8. 在不借助第三方变量情况下实现两个变量的交换(借助于异或运算)

    下面首先来看一个问题. 假设存在两个int型变量a和b,那么如何实现两个变量值的交换呢. 通常我们的做法,也是最容易想到的做法就是通过定义一个第三方变量,然后借助于该变量来实现变量值的交换. 方法一( ...

  9. 交换两变量的值,不使用中间变量

    前言: 一般情况下,我们交换两个变量的值都会使用一个中间变量,这样的程序也更容易理解. 程序源码: 使用中间变量时,交换两个变量的值: #include <stdio.h>int main ...

最新文章

  1. C#中使用 SendMessage 向非顶端窗体发送组合键
  2. matplotlib 一张图多个图,如何在Matplotlib中绘制同一个图上的多个函数?
  3. Spring Cloud比较好的博文地址
  4. sarama-cluster之panic: non-positive interval for NewTicker 问题
  5. 1-100以内的数求和,求出当和第一次大于20的当前数
  6. 服务器返回一个无效的JSON string,处理
  7. 大规模领域词汇库项目DomainWordsDict:涵盖68个领域、共计916万的词汇库资源开放
  8. 美国500万个工作已被机器取代!超级AI会让人类永生还是灭亡?
  9. :https web服务器ssl认证项目,Https自定义证书引入问题(2)
  10. matlab中设置拟合初值,如何确定自定义函数拟合时的参数初值?
  11. linux临时网络配置
  12. [Poi2000]公共串 hustoj2797
  13. github安装python包_使用PyCharm从GitHub安装Python包
  14. 使用3CDaemon软件搭建FTP来上传/下载交换机文件文件
  15. CactiEZ V10.1 中文版 Cacti中文 安装教程cactiezv10.iso
  16. 在python中,计算Sum = m + mm + mmm +mmmm+.....+mmmmm.....,输入两个数m,n。m的位数累加到n的值,列出算式并计算出结果:
  17. 高防服务器,可以防多大的ddos攻击
  18. 去中心化金融项目 Bloqboard FAQ
  19. 申诉解决TeamViewer免费个人版被误判为商业使用
  20. web端腾讯PAG初体验

热门文章

  1. megacli组建raid
  2. spring mvc中关于url中传递中文乱码的解决方法
  3. C#出题库项目的总结(1)
  4. 11月TIOBE编程语言排行榜,OC已经掉出前十
  5. Ubuntu文本编辑器适合linux平台的其它版本
  6. 安全应对MySQL攻击
  7. Chrome截图扩展程序-“截图快手”
  8. SQL Server 2005中专用管理员连接 (DAC) 使用技巧修改系统表的方法
  9. 女生做产品经理好吗_产品经理如何做产品架构设计
  10. 第三方 搜索 聚合 百度 php,百度小偷-搜索引擎聚合源码-寄生虫源码