异或运算 ^(xor)小解
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)小解相关推荐
- XOR World(异或运算)
时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 Let f(A,B) be the exclusive OR of A,A+1,-,B. Find f(A,B). Wh ...
- 不占用多余空间实现值的交换——异或运算
首先什么是异或运算? ^规则: 0 ^ x = x x ^ x = 0 那么 a 与 b 交换值如何做呢???三行代码
- C 关于使用异或运算操作概述
对于异或运算操作,每次都需要读取两个数据到寄存器中,再进行运算操作,之后把结果写回到变量中,前后共需要三次内存写入操作. 异或运算可以达到交换两数的目的,代码如下: void swap(int &am ...
- 训练三层BP神经网络实现异或运算 Python 代码实现
本文主要使用下面的网络结构来完成 异或运算 异或运算 : 0^0 = 0, 1^0 = 1, 0^1 = 1, 1^1 = 0 . 上图的公式推导可以参考博文: 三层神经网络前向后向传播示意图 imp ...
- 大脑只需单个神经元就可进行XOR异或运算,Science新研究揭开冰山一角,引发热议...
边策 赖可 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在机器学习中,异或(XOR)这样的非线性问题一直需要多层神经网络来解决.科学家一直以为,即使在人类大脑中,XOR运算也需要多层神经元网 ...
- 尼姆博奕 (Nimm Game) 异或运算;
讲到博弈,不得不讲异或运算, 我真服了 大神了, 怎么会将博弈和二进制联系到一起, 大写的服! 异或运算 ^ 原理就是 二进制形式,对于相应的每一位 相同 为0 不同为1 ; 简单理解就是 ...
- 关于一些运算((与运算)、|(或运算)、^(异或运算)........)的本质理解【转】...
看到一篇博客,关于一些运算的解析,觉得有用,怕以后找不着,直接复制下来,以备以后学习用 原文链接:https://blog.csdn.net/xiaopihaierletian/article/det ...
- FEC之异或运算应用
话说为啥FEC需要异或( ^/⊕ )操作呢? 异或:xor 异或运算规则: 0 xor 0 = 0 0 xor 1 = 1 1 xor 0 = 1 1 xor 1 = 0 异或运算特性: 1). a ...
- 异或运算_专题 | 异或运算的一些应用
点击上方蓝字设为星标 每周一.三.五上午 8:30 准时推送 下面开始今天的学习- 定义 异或是一个数学运算,用于逻辑运算.如果 a.b 两个值不同,则异或结果为 1 ,否则结果为 0 .真值表如下: ...
最新文章
- 转载-如何做好项目的需求与业务调研▲▲▲
- BZOJ 3218 UOJ #77 A+B Problem (主席树、最小割)
- 自监督学习新思路!基于蒸馏(distillation loss)的自监督学习算法
- BGP小实验(一)——小实验练练手走起来
- mysql myisam/innodb高并发优化经验_MySQL MyISAM / PHP 高并发优化经验
- Java利用二维数组判断节假日_《剑指offer》面试题3 二维数组中的查找 Java版
- Dynamics AX 2012–HR-离职
- python beautifulsoup多线程分析抓取网页
- 负载均衡会话保持技术、原理、产品(以F5为例)
- php中引入jquery文件_WP模板开发中,怎样给wordpress网站的文章,添加点赞功能?...
- web前端入门到实战:CSS3两大实用属性,以及网页制作技巧
- Keras——用Keras搭建线性回归神经网络
- webpack 无法加载文件 C:\Users\User\AppData\Roaming\npm\webpack.ps1,因为在此系统上禁止运行脚本。
- 阿里最新分享Redis全套学习笔记PDF版,图文并茂,太详细了
- 如何让exe以管理员权限运行
- Ubuntu20.4 ODBC连接数据库
- php怎么生成word模板,PHP 使用word模板生成word文档示例
- 德雷塞尔大学计算机科学专业,美国大学计算机科学专业排名如何
- 大数据学习线路_大数据初学者必备的详细版学习路线图
- smbd配置windows访问linux centos的共享文件