PS:这里用 ^ 表示异或运算,用 ^ 表示幂,为了方便观察,整数的二进制序列只用4位

什么是异或运算:

设a=1,b=3; 那么a=0001,b=0011

a^b=0001^0011=0010,当两个数做异或运算的时候对应的位置,如果相同则为0,不同则为1,就是说1^1=0,0^0=0 但是 1^0=1;

异或运算的特性:

1: a^b=c;当c异或b时,结果还原成a

2:一个数异或自己时等于0;

3:一个数异或0的时候,结果是其本身

不使用第三个变量交换两个变量的值:

1:相加法

int a = 1, b = 3;a = a + b;b = a - b;a = a - b;

缺点:我们知道,int 类型是有最大值的,当两个数刚好小于最大值,但是相加则大于最大值的时候,会照成溢出而导致计算不准确。

//利用异或的特性

2:异或法

a=a^b;
b=a^b;
a=a^b;

这里可以使用比较简单的理解方法:

a2=a1^b1; 
b2=a2^b1;        因为 a2=a1^b1,所以b2=a1^b1^b1; b1异或自己等于0,a1异或0等于自己
a1=a2^b2;        同理 a1=a2^a2^b1;

==========================================================

扩展:异或运算 又叫  不进位加法

设a=1,b=3;那么a=0001,b=0011

比如1+3;0001+0011 相加时,为0100

而异或是:0001^0011=0010        会发现其实是2^0次方位置相加了,但是2^1次方位置没有发生进位。

这里0001&0011=0001 <<1 =0010,这里1和3做与运算,然后再向左移一位,是a,b两个数相加该进位的位置,

0010和0010,再次异或等于 0000,再次进位  0010&0010<<1=0100,

0000和0100,再次异或 0100,再次进位 0000&0100<<1=0000,

会发现这里已经没有要进位的地方了,结果就是0100,会发现得到的结果跟最上面的加法无异,其实这就是相当于一个加法在计算机里面的模拟实现

int my_add(int a,int b)
{int sum=a;int carry=b;while(carry){int temp=sum;sum=sum^carry;carr=(temp&carry)<<1;}return sum;
}

异或运算 ^(xor)小解相关推荐

  1. XOR World(异或运算)

    时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 Let f(A,B) be the exclusive OR of A,A+1,-,B. Find f(A,B). Wh ...

  2. 不占用多余空间实现值的交换——异或运算

    首先什么是异或运算? ^规则: 0 ^ x = x x ^ x = 0 那么 a 与 b 交换值如何做呢???三行代码

  3. C 关于使用异或运算操作概述

    对于异或运算操作,每次都需要读取两个数据到寄存器中,再进行运算操作,之后把结果写回到变量中,前后共需要三次内存写入操作. 异或运算可以达到交换两数的目的,代码如下: void swap(int &am ...

  4. 训练三层BP神经网络实现异或运算 Python 代码实现

    本文主要使用下面的网络结构来完成 异或运算 异或运算 : 0^0 = 0, 1^0 = 1, 0^1 = 1, 1^1 = 0 . 上图的公式推导可以参考博文: 三层神经网络前向后向传播示意图 imp ...

  5. 大脑只需单个神经元就可进行XOR异或运算,Science新研究揭开冰山一角,引发热议...

    边策 赖可 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在机器学习中,异或(XOR)这样的非线性问题一直需要多层神经网络来解决.科学家一直以为,即使在人类大脑中,XOR运算也需要多层神经元网 ...

  6. 尼姆博奕 (Nimm Game) 异或运算;

    讲到博弈,不得不讲异或运算, 我真服了 大神了, 怎么会将博弈和二进制联系到一起,  大写的服! 异或运算 ^    原理就是  二进制形式,对于相应的每一位  相同 为0 不同为1 ; 简单理解就是 ...

  7. 关于一些运算((与运算)、|(或运算)、^(异或运算)........)的本质理解【转】...

    看到一篇博客,关于一些运算的解析,觉得有用,怕以后找不着,直接复制下来,以备以后学习用 原文链接:https://blog.csdn.net/xiaopihaierletian/article/det ...

  8. FEC之异或运算应用

    话说为啥FEC需要异或( ^/⊕ )操作呢? 异或:xor 异或运算规则: 0 xor 0 = 0 0 xor 1 = 1 1 xor 0 = 1 1 xor 1 = 0 异或运算特性: 1). a ...

  9. 异或运算_专题 | 异或运算的一些应用

    点击上方蓝字设为星标 每周一.三.五上午 8:30 准时推送 下面开始今天的学习- 定义 异或是一个数学运算,用于逻辑运算.如果 a.b 两个值不同,则异或结果为 1 ,否则结果为 0 .真值表如下: ...

最新文章

  1. 转载-如何做好项目的需求与业务调研▲▲▲
  2. BZOJ 3218 UOJ #77 A+B Problem (主席树、最小割)
  3. 自监督学习新思路!基于蒸馏(distillation loss)的自监督学习算法
  4. BGP小实验(一)——小实验练练手走起来
  5. mysql myisam/innodb高并发优化经验_MySQL MyISAM / PHP 高并发优化经验
  6. Java利用二维数组判断节假日_《剑指offer》面试题3 二维数组中的查找 Java版
  7. Dynamics AX 2012–HR-离职
  8. python beautifulsoup多线程分析抓取网页
  9. 负载均衡会话保持技术、原理、产品(以F5为例)
  10. php中引入jquery文件_WP模板开发中,怎样给wordpress网站的文章,添加点赞功能?...
  11. web前端入门到实战:CSS3两大实用属性,以及网页制作技巧
  12. Keras——用Keras搭建线性回归神经网络
  13. webpack 无法加载文件 C:\Users\User\AppData\Roaming\npm\webpack.ps1,因为在此系统上禁止运行脚本。
  14. 阿里最新分享Redis全套学习笔记PDF版,图文并茂,太详细了
  15. 如何让exe以管理员权限运行
  16. Ubuntu20.4 ODBC连接数据库
  17. php怎么生成word模板,PHP 使用word模板生成word文档示例
  18. 德雷塞尔大学计算机科学专业,美国大学计算机科学专业排名如何
  19. 大数据学习线路_大数据初学者必备的详细版学习路线图
  20. smbd配置windows访问linux centos的共享文件

热门文章

  1. 教育直播的受众人群分析
  2. 【电子技术实验】555定时器秒脉冲时钟电路
  3. AutoIT3 vs AutoHotkey
  4. 硬盘变RAW:文件或目录损坏且无法读取/此卷不包含可识别的文件系统等无法访问错误可直接修复...
  5. oracle jdbc中文,oracle jdbc
  6. NHibernate 缓存
  7. 最全的整理:毫米波雷达在检测、分割、深度估计等多个方向的近期工作及简要介绍
  8. 河北省网上报税系统使用心得
  9. python + ffmpeg视频尺寸及参数转换
  10. c4droid的c语言输出随机颜色图像代码