与、或、异或

简介: 与、或、异或

1.与运算(&)


参加运算的两个数据,按[二进制]位进行“与”运算。

运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;

即:两位同时为“1”,结果才为“1”,否则为0

例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值为1。

例如:9&5 即 0000 1001 (9的二进制补码)&00000101 (5的二进制补码) =00000001 (1的二进制补码)可见9&5=1。

2.或运算(|)


参加运算的两个对象,按二进制位进行“或”运算。

运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;

即 :参加运算的两个对象只要有一个为1,其值为1

例如: 3|5 可写算式如下: 0000 0011 | 0000 0101 = 0000 0111(十进制为7)因此,3|5的值为7。

例如:9|5 可写算式如下: 00001001 | 00000101 = 00001101 (十进制为13)因此,9|5的值为13。

3.[异或运算]


参加运算的两个数据,按二进制位进行“异或”运算。

运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;

即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0

例如:9^5可写成算式如下: 00001001 ^ 00000101 = 00001100 (十进制为12)因此,9^5的值为12。

异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0 ^ 0=0,1 ^ 0=1,0 ^ 1=1,1 ^ 1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位,所以异或常被认作不进位加法。 初学开发的人,总是搞不清“或“运算和“异或“运算的本质区别,只知道对于或运算来说,结果是:只要有一个为1,就为1,只有都为0才为0;而异或的结果是相同为0,不同为1,这么说大家只是记住了一个运算法则,确不明白它们的意义,举个例子来说它们之间的区别:

先说或的意义:

有学生证或者血型是AB型的人才可以免费吃我们提供的午餐,这里存在3种情况都可以免费吃午餐:

1)有学生证的人

2)AB型的人,可能不是学生啊!

3)既是AB型,又有学生证的人,两种条件都满足,这是或运算最大的特点。

再说异或的意义:

只有中国人和美国人可以免费领取我们提供的特色服务,这里只有两种情况:

1)是中国人

2)是美国人

大家仔细思考,异或没有既是中国人,又是美国人的情况,因为一个人的国籍只可能是一种,这就是异或与或最大的差别,在异或中,测试对象只可能满足一个条件,而在或运算中,测试对象可以同时满足2个条件。

相关文章
|
7月前
|
存储
算数移位,逻辑移位以及循环移位
算数移位,逻辑移位以及循环移位
139 0
|
7月前
|
算法 测试技术 C++
【位运算 拆位法】1835. 所有数对按位与结果的异或和
【位运算 拆位法】1835. 所有数对按位与结果的异或和
|
7月前
|
算法
异或算法
异或算法
位操作(异或骚操作)
位操作(异或骚操作)
50 0
|
机器学习/深度学习 算法
算法提升(二) 异或法
算法提升(二) 异或法
334 2
算法提升(二) 异或法
异或运算符简单逻辑运算 a^=b
异或运算符简单逻辑运算 a^=b
135 0
|
人工智能
|
存储 算法
经典算法之异或运算(无进位相加)
经典算法之异或运算(无进位相加)
经典算法之异或运算(无进位相加)
|
算法
算法中的与、异或运算
算法中的与、异或运算
172 0