同或异或的区别?

255 2024-11-15 08:59

一、同或异或的区别?

同或和异或是逻辑运算符号,在计算机领域中常被使用。

异或(XOR)操作符表示当两个操作数不相同时结果为1,否则结果为0。举个例子:假设有两个二进制数字1010和1100,进行异或运算,结果是0110。在计算机中,异或操作通常用于数据加密、纠错码和数据校验等领域。

同或(XNOR)操作符表示当两个操作数相同时结果为1,否则结果为0。同样来看一个二进制数字的例子:假设有两个数字1010和1100,进行同或运算,结果是1001。同或操作也被广泛应用于数字电路中,特别是在布尔代数和逻辑门的设计中。

在实际应用中,同或操作符通常需要进行复杂的逻辑设计,因为同或运算与其他运算符的组合可以实现各种逻辑功能,例如与非门和或非门等。异或操作符则比同或操作符更加常见和简单,因为异或运算符在逻辑电路中常常用于实现基本逻辑功能,例如逻辑门和触发器等。

需要注意的是,同或操作符和异或操作符的结果可能不同,因此在应用中需要根据实际需求选择合适的操作符。

二、同或异或的运算?

运算法则:相同为1,不同为0

运算符号:⊙

表达式:a⊙b=ab+a'b'(a'为非a,b'为非b);

异或运算

运算法则:相同为0,不同为1

运算符号:⊕

表达式 :a⊕b=a'b+ab'(a'为非a,b'为非b)

异或运算的常见用途:

(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

位移运算

左移运算

运算符:<<

表达式:m<

运算规则:左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0

eg:00001010 << 2 = 00101000

右移运算

运算符:>>

表达式:m>>n(表示把m右移n位)

运算规则:右移n位的时候,最右边的n位将被丢弃。 这里要特别注意,如果数 字是一个无符号数值,则用0填补最左边的n位。如果数字是一个有符号数值,则用数字的符号位填补最左边的n位。也就是说如果数字原先是一个正数,则右移之后再最左边补n个0;如果数字原先是负数,则右移之后在最左边补n个1

eg: 00001010 >> 2 = 00000010

eg: 10001010 >> 3 = 11110001

补充:二进制中把最左面的一位表示符号位,0表示正数,1表示负数

按位与运算

运算符:&

表达式: 00000101 & 00001100 = 00001000

按位或运算

运算符:|

表达式:00000101 | 00001100 = 00001110

按位与按位或用途:

typedef NS_ENUM(NSInteger, TestType){ //定义枚举

TestTypeNone = 0,

TestTypeFirst = 1<<0,

TestTypeSecond = 1<<1,

TestTypeThird = 1<<2,

TestTypeFourth = 1<<3

};

//测试代码

TestType type = TestTypeFirst | TestTypeFourth;

if (type & TestTypeFirst) {

NSLog(@"TestTypeFirst");

}

if (type & TestTypeSecond) {

NSLog(@"TestTypeSecond");

}

if (type & TestTypeThird) {

NSLog(@"TestTypeThird");

}

if (type & TestTypeFourth) {

NSLog(@"TestTypeFourth");

}

if ((TestTypeFirst | TestTypeThird) & (TestTypeSecond | TestTypeFourth)) {

NSLog(@"(TestTypeFirst | TestTypeThird) & (TestTypeSecond | TestTypeFourth)");

}

if ((TestTypeFirst | TestTypeThird) & (TestTypeSecond | TestTypeThird | TestTypeFourth)) {

NSLog(@"(TestTypeFirst | TestTypeThird) & (TestTypeSecond | TestTypeThird | TestTypeFourth)");

}

//输出结果

TestTypeFirst

TestTypeFourth

(TestTypeFirst | TestTypeThird) & (TestTypeSecond | TestTypeThird | TestTypeFourth

三、异或同或逻辑公式?

异或(XOR)和同或(XNOR)是两种逻辑运算。它们的公式如下:

异或(XOR):当两个输入值不同时,输出为1,否则输出为0。

A XOR B = (¬A ∧ B) ∨ (A ∧ ¬B)

同或(XNOR):当两个输入值相同时,输出为1,否则输出为0。

A XNOR B = (A ∧ B) ∨ (¬A ∧ ¬B)

其中,符号“∧”表示逻辑与(AND),符号“∨”表示逻辑或(OR),符号“¬”表示逻辑非(NOT)。

四、证明A同或B同或C与A异或B异或C相等?

注:下列式中用@表示同或,用*(X)表示非X

A⊕B⊕C=(A⊕B)⊕C

=(A⊕B)*(C)+*(A⊕B)C 【⊕定义】

=*(A@B)*C+(A@B)C 【⊕与@互反】

=(A@B)@C 【@定义】

=A@B@C

五、异或和同或的区别?

同或和异或互为非运算

异或(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

同或”是一个数学运算符,应用于逻辑运算。 其运算法则为a同或b=ab+a‘b’(a'为非a)。

真“同或”假的结果是假,假“同或”真的结果也是假,真“同或”真的结果是真,假“同或”假的结果是真。就是说两个值相同,则同或结果为真。反之,为假。——简称同真,异假。即,同或:相同为一,不同为零。

同或符号为⊙。(圆圈内为点)

六、同或和异或的符号?

同或和异或互为非运算。

异或(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),这些法则与加法是相同的,只是不带进位。

词汇释义

“同或”是一个数学运算符,应用于逻辑运算。 其运算法则为a同或b=ab+a‘b’(a'为非a)。

真“同或”假的结果是假,假“同或”真的结果也是假,真“同或”真的结果是真,假“同或”假的结果是真。就是说两个值相同,则同或结果为真。反之,为假。——简称同真,异假。即,同或:相同为一,不同为零。

七、同或和异或的规律?

同或是相同则有,异或是不同则有。

八、异或和同或怎么理解?

异或(xor)是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b=(¬a∧b)∨(a∧¬b)如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。

“同或”可以是一个数学运算符,应用于逻辑运算。其运算法则为a同或b=ab+a‘b’(a'为非a),即a和b相同为真,不同为假。也可以表示其它的含义。或非是一种逻辑算法,常在计算机中以“或非门”的形式存在。“或非”和析取的否定是等价的。表示为:NOR。

九、异或同或转化具体步骤?

先列真值表,让F=a异或b异或c。可知当abc为001,010,100,111时F为1,然后画卡诺图,四个1都不相邻,得F=a'bc'+a'b'c+ab'c'+abc,(a'就是a非的意思),然后对F两次取反,就得到F=((a'bc')'(a'b'c)'(ab'c')'(abc)')'。这就是与非表达式了。

十、异或非是不是等于同或?

谢邀, 这样理解,例子如下:A 同或 B = ~(A 异或 B)A 同或 B 同或 C 同或 D= ~(A 异或 B 异或 C 异或 D)再自己试一下真值表就知道了。

顶一下
(0)
0%
踩一下
(0)
0%
相关评论
我要评论
点击我更换图片