位與:&it
操做:1 & 1 = 1; 1 & 0 = 0; 0 & 0 = 0;總結
特色:只有全是1的時候纔是1,其餘狀況都是0.
總結:任何數和0位與就是0,和1位與沒有變化,因此位與經常使用在清零上(清零用位與)。
位或:|
操做:1 | 1 = 1; 1 | 0 = 1; 0 | 0 = 0;
特色:只有全0的時候纔是0,其餘狀況都是1.
總結:任何數和1位或就是1,和0位或沒有變化,因此位或經常使用在置1上(置1用位或)。
位取反:~
操做:~1 = 0; ~0 = 1;
特色:1取反爲0,0取反爲1.
位異或:^
操做:1 ^ 1 = 0; 1 ^ 0 = 1; 0 ^ 1 = 1; 0 ^ 0 = 0;
特色:相同爲0,不一樣爲1.
總結:任何數和1位異或會取反,和0異或沒有變化(特定位要取反就用位異或)。
左移(<<)和右移(>>)
操做的時候要考慮有符號數(signed number)和無符號數(unsigned number)。
對於有符號數:左移的時候右側補0;右移的時候左側補符號位(正數符號位爲0,則補0;負數符號位爲1,則補1).
對於無符號數:左移的時候右側補0;右移的時候左側也是補0.
注意:咱們對寄存器進行賦值的時候用的都是無符號的數
某一位取反 &= ~
a &= ~b;
a ^= 1<<bit;