同或和异或的运算是什么?

成都西岭雪山2023-02-01  18

同或运算:相同位置的两个二进制数有1结果就是1,否则为0。异或运算:相同为0,相异为1。

异或是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (a ∧ b) ∨ (a ∧b)。

异或逻辑的关系是:

当AB不同时,输出P=1;当AB相同时,输出P=0。“⊕”是异或运算符号,异或逻辑也是与或非逻辑的组合,其逻辑表达式为:P=A⊕B。

多个异或连续运算,就类似数学上的连加、连乘运算:将前两个数的运算结果,与第三个数继续运算;再将结果与第四个运算;直到最后得出结果,其中的每一步都要按照相应运算的规则进行。

异或有专门的操作符^,比如int

a,b,c,dc=a^b,则表示c是a与b异或的结果。C中虽然没有同或操作符,但由逻辑关系知同或是异或的非,所以d=!(a^b),那么d就是a与b同或的结果。

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

运算符号:⊙

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

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

运算符号:⊕

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

异或运算的常见用途:

运算符:<<

表达式:m<<n(表示把m左移n位)

运算规则:左移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

按位与按位或用途:


转载请注明原文地址:https://juke.outofmemory.cn/read/2862986.html

最新回复(0)