“异或”的数学运算符表示为“⊕”,“同或”的数学运算符表示为“⊙”,在计算机网络中“1”表示“真”,“0”表示“假”
Hello!你好哇,我是灰小猿!
在学习计算机网络的时候,有用到对二进制数进行异或(符号:⊕)和同或(符号:⊙)运算,所以在这里简单记录一下。
在数学中异或和同或常用于命题的判断,而在计算机中则常用于二进制数之间的运算,
关于异或运算有以下的规定:
0⊕0=0 0同0异或,结果为0
0⊕1=1 0同1异或,结果为1
1⊕0=1 1同0异或,结果为1
1⊕1=0 1同1异或,结果为0
即两个逻辑变量相异,输出才为1
也可以用两句话表示:“异为1,同为0”
而在计算机网络中真正对其进行使用的时候,两个二进制数之间的简单异或运算并不多见,更多的则是多异或连续运算。
首先看几个多异或连续运算的式子:
1⊕0⊕1⊕1⊕1=0
1⊕0⊕1⊕0⊕1=1
0⊕0⊕1⊕0=1
0⊕1⊕1⊕0=0
关于这种多异或连续运算,通常的思路是:
多个异或连续运算,就类似数学上的连加、连乘运算:将前两个数的运算结果,与第三个数继续运算;再将结果与第四个运算;直到最后得出结果,其中的每一步都要按照相应运算的规则进行;
但是也还有另外一种比较简单的判断方法:
多个命题(或命题变量)的“异或”运算:其结果依赖于参与运算的所有量中,取值为“真(1)”的量的“个数”的“奇偶性”:
若含“奇数”个“真命题(1)”,则结果为“真(1)”;
若含“偶数”个“真命题(1)”,则结果为“假(0)”;(注:零个也是偶数个)
所以这样看来,上面的式子中:
第一个有偶数个“1”则结果为“0”,
第二个有奇数个“1”则结果为“1”,
换句话说:命题表达式 A⊕B⊕C⊕D 结果为“真”,当且仅当 A、B、C、D 中有奇数个(即 1 个或 3 个)变量的取值为“真”;
而至于其中“假命题”的个数,则对结果“无任何影响”。关于这一点的证明,可以从下面两个恒等式中找到思路:
p ⊕ 1 = 非p;——增加一个“真命题”参与运算,总会将“原命题”变成其“反命题”;
p ⊕ 0 = p;——增加一个“假命题”参与运算,对“原命题”永远没影响;
关于同或运算有以下几点要注意:
1.“同或”是一个数学运算符,应用于逻辑运算。 其运算法则为a同或b=ab+a‘b’(a'为非a)。
真“同或”假的结果是假,假“同或”真的结果也是假,真“同或”真的结果是真,假“同或”假的结果是真。
换句话说就是:两个值相同,则同或结果为真。反之,为假。——简称同真,异假。即,同或:相同为一,不同为零。
2. 同或符号为⊙。(圆圈内为点)
3. 同或和异或互为非运算。
4. 同或公式:
a⊙b=ab+a'b'(a'为非a,b'为非b);
5. 同或真值表
a | b | a⊙b |
---|---|---|
0 | 0 | 1 |
1 | 1 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
6.同或运算只有交换律和结合律
a ⊙ b = b ⊙ a; (a ⊙ b) ⊙ c = a ⊙ (b ⊙ c);
对于多个输入的同或可以这样理解:
a ⊙ 1 = a; a⊙ 0⊙ 0 = a;
即a与任意个1或偶数个0的同或,结果是a本身
例如:
1⊙ 1⊙ 0⊙ 1⊙ 0⊙ 0的运算方法为:
1)根据交换律,可以把输入中的 1 全部向右靠在一起得
0⊙ 0⊙ 0⊙ 1 ⊙1⊙ 1,然后根据结合律
0⊙ 0⊙ 0⊙ (1⊙1⊙ 1),消去所有 1,得
0⊙ 0⊙ 0
2)消去偶数个 0,得结果为:0
如果步骤 1)将得到偶数个 0 则少消除一个 1 作为结果
简而言之,同或运算就是观察输入中 0 的个数。奇数个 0 则结果为 0 ,偶数个 0 则结果为 1
觉得有用记得点赞关注哟!
大灰狼陪你一起进步!