当前位置:首页>维修大全>综合>

同或异或的运算(异或运算和同或运算的符号)

同或异或的运算(异或运算和同或运算的符号)

更新时间:2025-06-28 16:50:44

同或异或的运算

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

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

同或符号为⊙。

同或和异或互为非运算。

同或公式:

a⊙b=ab+a'b'(a'为非a,b'为非b);

运算法则:相同为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

更多栏目