運算符說明

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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章