同或运算:相同位置的两个二进制数有1结果就是1,否则为0。异或运算:相同为0,相异为1。
异或是一个数学运算符。它应用于逻辑运算。异或的数学符号为“⊕”,计算机符号为“xor”。其运算法则为:a⊕b = (a ∧ b) ∨ (a ∧b)。
异或逻辑的关系是:
当AB不同时,输出P=1;当AB相同时,输出P=0。“⊕”是异或运算符号,异或逻辑也是与或非逻辑的组合,其逻辑表达式为:P=A⊕B。
多个异或连续运算,就类似数学上的连加、连乘运算:将前两个数的运算结果,与第三个数继续运算;再将结果与第四个运算;直到最后得出结果,其中的每一步都要按照相应运算的规则进行。
异或有专门的操作符^,比如inta,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
按位与按位或用途: