异或 订阅
异或,英文为exclusive OR,缩写成xor异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。异或略称为XOR、EOR、EX-OR程序中有三种演算子:XOR、xor、⊕。使用方法如下z = x ⊕ yz = x xor y 展开全文
异或,英文为exclusive OR,缩写成xor异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。异或略称为XOR、EOR、EX-OR程序中有三种演算子:XOR、xor、⊕。使用方法如下z = x ⊕ yz = x xor y
信息
数学符号
外文名
exclusive OR
程序符号
^
中文名
异或
英文简称
xor
异或运算法则
1. a ⊕ a = 02. a ⊕ b = b ⊕ a3. a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;4. d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.5. a ⊕ b ⊕ a = b.6.若x是二进制数0101,y是二进制数1011;则x⊕y=1110只有在两个比较的位不同时其结果是1,否则结果为0即“两个输入相同时为0,不同则为1”!
收起全文
精华内容
下载资源
问答
  • 则b=a ^ c (^是异或的意思),php在处理异或的字符时先把字符转化为二进制的ascii值,对这些值进行异或,获取结果后在将ascii值转化为字符,原理说晚了直接贴实现的代码:复制代码 代码如下:echo ‘<meta charset=...
  • 异或校验计算器

    2018-12-06 11:22:15
    顺便分享一下异或校验的代码,也是我一直在用的: /******************************************************************************* Name:XORCheck Function: XORCheck. Input:buffer,size Return:result ******...
  • labview异或和校验算法

    2021-01-02 11:13:58
    用labview写的,用于字符串ascii码异或和校验,文件中转有dll库 可以到http://www.ip33.com/bcc.html这个网址验证是否正确
  • java异或加密算法

    2020-09-04 19:41:04
    主要介绍了java异或加密算法,有需要的朋友可以参考一下
  • 异或

    2021-05-08 09:12:31
    异或,是一个数学运算符,英文为exclusive OR,缩写为xor,应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为: a⊕b = (¬a ∧ b) ∨ (a ∧¬b) 如果a、b两个值不相同,则异或结果为...

    异或,是一个数学运算符,英文为exclusive OR,缩写为xor,应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:

    a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

    如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

    异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。

    异或略称为XOR、EOR、EX-OR

    程序中有三种演算子:XOR、xor、⊕。

    使用方法如下

    z = x ⊕ y

    z = x xor y

    异或运算的作用

    参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。

    即:

    0^0 = 0,

    1^0 = 1,

    0^1 = 1,

    1^1 = 0

    按位异或的3个特点:

    (1) 00=0,01=1 0异或任何数=任何数

    (2) 10=1,11=0 1异或任何数-任何数取反

    (3) 任何数异或自己=把自己置0

    按位异或的几个常见用途:

    (1) 使某些特定的位翻转

    例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。

    10100001^00000110 = 10100111

    (2) 实现两个值的交换,而不必使用临时变量。

    例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:

    a = a^b;   //a=10100111

    b = b^a;   //b=10100001

    a = a^b;   //a=00000110

    (3) 在汇编语言中经常用于将变量置零:

    xor a,a

    (4) 快速判断两个值是否相等

    举例1: 判断两个整数a,b是否相等,则可通过下列语句实现:

    return ((a ^ b) == 0)

    举例2: Linux中最初的ipv6_addr_equal()函数的实现如下:

    staTIc inline int ipv6_addr_equal(const struct in6_addr *a1, const struct in6_addr *a2)

    {

    return (a1-》s6_addr32[0] == a2-》s6_addr32[0] &&

    a1-》s6_addr32[1] == a2-》s6_addr32[1] &&

    a1-》s6_addr32[2] == a2-》s6_addr32[2] &&

    a1-》s6_addr32[3] == a2-》s6_addr32[3]);

    }

    可以利用按位异或实现快速比较, 最新的实现已经修改为:

    staTIc inline int ipv6_addr_equal(const struct in6_addr *a1, const struct in6_addr *a2)

    {

    return (((a1-》s6_addr32[0] ^ a2-》s6_addr32[0]) |

    (a1-》s6_addr32[1] ^ a2-》s6_addr32[1]) |

    (a1-》s6_addr32[2] ^ a2-》s6_addr32[2]) |

    (a1-》s6_addr32[3] ^ a2-》s6_addr32[3])) == 0);

    }

    5 应用通式:

    对两个表达式执行按位异或。

    result = expression1 ^ expression2

    参数

    result

    任何变量。

    expression1

    任何表达式。

    expression2

    任何表达式。

    说明

    ^ 运算符查看两个表达式的二进制表示法的值,并执行按位异或。该操作的结果如下所示:

    0101 (expression1)1100 (expression2)----1001 (结果)当且仅当只有一个表达式的某位上为 1 时,结果的该位才为 1。否则结果的该位为 0。

    只能用于整数

    下面这个程序用到了“按位异或”运算符:

    class E

    { public staTIc void main(String args[ ])

    {

    char a1=‘十’ , a2=‘点’ , a3=‘进’ , a4=‘攻’ ;

    char secret=‘8’ ;

    a1=(char) (a1^secret);

    a2=(char) (a2^secret);

    a3=(char) (a3^secret);

    a4=(char) (a4^secret);

    System.out.println(“密文:”+a1+a2+a3+a4);

    a1=(char) (a1^secret);

    a2=(char) (a2^secret);

    a3=(char) (a3^secret);

    a4=(char) (a4^secret);

    System.out.println(“原文:”+a1+a2+a3+a4);

    }

    }

    就是加密啊解密啊

    char类型,也就是字符类型实际上就是整形,就是数字。

    计算机里面所有的信息都是整数,所有的整数都可以表示成二进制的,实际上计算机只认识二进制的。

    位运算就是二进制整数运算啦。

    两个数按位异或意思就是从个位开始,一位一位的比。

    如果两个数相应的位上一样,结果就是0,不一样就是1

    所以111^101=010

    那加密的过程就是逐个字符跟那个secret字符异或运算。

    解密的过程就是密文再跟同一个字符异或运算

    010^101=111

    至于为什么密文再次异或就变原文了,这个稍微想下就知道了。。
      异或运算:按位异或运算符

    首先异或表示当两个数的二进制表示,进行异或运算时,当前位的两个二进制表示不同则为1相同则为0.该方法被广泛推广用来统计一个数的1的位数!

    参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。

    即:

    0^0 = 0,

    1^0 = 1,

    0^1 = 1,

    1^1 = 0

    按位异或的3个特点:

    (1) 00=0,01=1 0异或任何数=任何数

    (2) 10=1,11=0 1异或任何数-任何数取反

    (3) 任何数异或自己=把自己置0

    按位异或的几个常见用途:

    (1) 使某些特定的位翻转

    例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。

    10100001^00000110 = 10100111

    (2) 实现两个值的交换,而不必使用临时变量。

    例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:

    a = a^b;   //a=10100111

    b = b^a;   //b=10100001

    a = a^b;   //a=00000110

    位运算

    位运算时把数字用二进制表示之后,对每一位上0或者1的运算。理解位运算的第一步是理解二进制。二进制是指数字的每一位都是0或者1.比如十进制的2转化为二进制之后就是10。

    其实二进制的运算并不是很难掌握,因为位运算总共只有5种运算:与、或、异或、左移、右移。如下表:

    左移运算:

    左移运算符m《《n表示吧m左移n位。左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0.比如:

    右移运算:

    右移运算符m》》n表示把m右移n位。右移n位的时候,最右边的n位将被丢弃。但右移时处理最左边位的情形要稍微复杂一点。这里要特别注意,如果数字是一个无符号数值,则用0填补最左边的n位。如果数字是一个有符号数值,则用数字的符号位填补最左边的n位。也就是说如果数字原先是一个正数,则右移之后再最左边补n个0;如果数字原先是负数,则右移之后在最左边补n个1.下面是堆两个8位有符号数作右移的例子:

    关于移位的运算有这样的等价关系:把整数右移一位和把整数除以2在数学上是等价的。

    计算机内部只识别1、0,十进制需变成二进制才能使用移位运算符《《,》》 。

    int j = 8;

    p = j 《《 1;

    cout《《p《《endl;

    在这里,8左移一位就是8*2的结果16 。

    移位运算是最有效的计算乘/除乘法的运算之一。

    按位与(&)其功能是参与运算的两数各对应的二进制位相与。只有对应的两个二进制位均为1时,结果位才为1,否则为0 。参与运算的数以补码方式出现。

    先举一个例子如下:

    题目:请实现一个函数,输入一个正数,输出该数二进制表示中1的个数。

    这里用到了这样一个知识点:把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0 。 那么一个整数的二进制表示中有多少个1,就可以进行多少次这样的操作。

    总结:把一个整数减去1之后再和原来的整数做位与运算,得到的结果相当于是把整数的二进制表示中的最右边一个1变成0 。

    位运算的应用可以运用于很多场合:

    清零特定位(mask中特定位置0,其它位为1 , s = s & mask)。

    取某数中指定位(mask中特定位置,其它位为0, s = s & mask)。

    举例:输入两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。

    解决方法:第一步,求这两个数的异或;第二步,统计异或结果中1的位数。

    接下来我们再举一例,就可以更好的说明移位运算了:用一条语句判断一个整数是不是2的整数次方。

    解决方法:一个整数如果是2的整数次方,那么它的二进制表示中有且只有一位是1,而其它所有位都是0 。 根据前面的分析,把这个整数减去1后再和它自己做与运算,这个整数中唯一的1就变成0了。

    展开全文
  • 按位“异或”运算符 (^)是对两个表达式执行按位异或,下面为大家介绍下其具体的使用方法
  • 今天小编就为大家分享一篇python 异或加密字符串的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要为大家详细介绍了java实现两个文件的异或运算,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素不重复)
  • 根据西北工业大学出版社出版的《数字电子技术常见题型及解析》中的一题目,总结了变量之异或式及变量之异或非式在卡诺图上的排列规律,对于卡诺图中有2r-1个“1”值格呈对角排列时直接写出其异或形式的方法从两个...
  • 异或运算的 BP算法解决 智能优化方法 技术报告 题目基于 BP算法的异或运算的解决 班 级 信科 13-01 班 学 号 08133367 姓 名 张谊坤 任课教师 姚 睿 2 目 录 一 摘 要 3 二 技术路线及实现方法 2.1 输 入 层 和 输 ...
  • 主要介绍了Java中使用异或运算符实现加密字符串,本文直接给出实现代码,以及运算结果加密实例,需要的朋友可以参考下
  • 交换两个数的值,通常用利用一个变量来交换数值,异或交换两个数的值是资源开销最小的方法,不需要中介数,原理简单的来说就是异或的负负得正
  • 试设计一个前馈神经网络来解决XOR问题 该前馈神经网络具有两个隐藏神经元和一个输出神经元 github地址 ...代码 # 利用Pytorch解决XOR问题 import torch import torch.nn as nn import torch.nn.functional as F ...
  • 主要为大家详细介绍了java使用异或方式对文件进行加密解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 对文件进行异或加密解密。注释有,稍微还有点bug,但是不是很影响吧。采用C语言编写的。能够对一个文本文件进行异或加密,加密成论文一个文件,还可以解密,解密成一个解密文件
  • 本代码使用newp建立两层感知器,用第一层的输出作为第二层的输入,每一步都有详细的说明,程序比较精简,只有20行代码,就实现了多层感知器解决异或的问题,经测试,正确率100%。 例:q=[1 1 0; 1 0 1]; >> a=...
  • 按位异或计算器

    2019-02-21 18:01:17
    按位异或计算器,工具类,上传备用不需要积分。
  • 主要介绍了Java编程实现对十六进制字符串异或运算代码示例,简述了异或运算以及具体实例,具有一定借鉴价值,需要的朋友可以参考下。
  • CRC计算器工具,有和、异或校验方法计算,方便工程师调试的小工具
  • BCC 数据异或校验

    2018-09-26 10:42:35
    LabVIEW 2013编写BCC 数据异或校验,用于BCC数据校验码计算。
  • 基于labview写的bcc(异或校验)BCC(Block Check Character/信息组校验码),因校验码是将所有数据异或得出,故俗称异或校验。具体算法是:将每一个字节的数据(一般是两个16进制的字符)进行异或后即得到校验码。
  • CRC计算器工具,有和、异或异或取反等校验方法计算,方便前期应用开发
  • 一款对16进制串进行异或校验的工具,对硬件开发有帮助。
  • 这个是一个labview的数据校验模块。。有需要的可以下载用
  • BCC校验小知识 BCC(Block Check Character/信息组校验码),因校验码是将所有数据异或得出,故俗称异或校验。具体算法是:将每一个字节的数据(一般是两个16进制的字符)进行异或后即得到校验码。 例如16进制数据:...
  • 本篇文章对C++中的异或运算符^的使用方法进行的详细的分析介绍,需要的朋友参考下
  • 主要介绍了基于python的BP神经网络及异或实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 193,678
精华内容 77,471
关键字:

异或