色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

同或異或的運算

黃文隆2年前86瀏覽0評論

同或異或的運算?

運算法則:相同為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

java邏輯運算符與和或,同或異或的運算