1、C語言中的 >>= 意思爲:右移後賦值
代碼示例爲:
x = 8;
x >>= 3;
右移後結果爲:00000000 00000000 00000000 00000001
2、C語言中的 <<= 意思爲:左移後賦值
代碼示例爲:
x = 8;
x <<= 3;
左移後賦值結果爲:00000000 00000000 00000000 01000000
3、C語言中的 &= 意思爲:按位與後賦值
代碼示例爲:
x = 0x02;
x &= 0x01;
按位與後的結果爲:0x00
4、C語言中的 ^= 意思爲:按位異或後賦值
代碼示例爲:
x = 0x02;
x ^= 0x01;
按位異或的結果爲:0x03 等同於0011
5、C語言中的 |= 意思爲:按位或後賦值
代碼示例爲:
x = 0x02;
x |= 0x01;
按位或的結果爲:0x03 等同於0011
6.
1<<i是把1左移i位,每次左移以爲就是乘以2,所以1<<i的結果是1乘以2的i次方
i<<1就是把i左移一位,即i乘以2,假如i=5,最後結果就是5*2=10
至於爲什麼左移一位是乘以2,這是運算器內部機理,說起來就更多了,計算機做乘法運算的時候不是一個個的相加,而是用移位來實現的。>>這個符號是右移,與左移相反,右移是除以2.
7.
<<是按位左移運算,~是按位取反運算,=是賦值運算。
P2=~(1<<i)的意思是把1換成二進制數,然後左移i位,再按位取非,將結果賦給P2,等價於P2=(~(1<<i))。
比如i爲3。那麼P2= ~(1<<i) = ~(1<<3) 。
先按1個字節來看,1的二進制爲00000001,左移3位得到00001000。取反得到11110111,即十六進制的F7。
如果整數爲4個字節,那麼P2= ~(1<<3) = 0xFFFFFFF7。