1. 程式人生 > >C語言中P2=~(1左移i)是什麼意思?

C語言中P2=~(1左移i)是什麼意思?

<<是按位左移運算,~是按位取反運算,=是賦值運算。
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。

 

 

另外

3左移i位然後取反
例子:
i = 3; 1的二進位制表示為 0000 0001

1<<i :0000 1000

~(1<<i) :1111 0111