c 中的位運算相關規律總結和口訣

2021-08-08 18:27:33 字數 1460 閱讀 7962

位運算應用口訣

清零取反要用與,某位置一可用或

若要取反和交換,輕輕鬆鬆用異或

<< >> >>>

左移乘2,右移除2,無符號右移

&a&1判斷最後1位/判斷奇偶

^同0異1,a&b無進製相加

~負數=add(~a,1)

優先順序描述

運算子1

括號()、

2正負號

+、-3

自增自減,非

++、--、!

4乘除,取餘

*、/、%5加減

+、-6

移位運算

<<、>>、>>>

7大小關係

>、>=、<、<=

8相等關係

==、!=

9按位與&10

按位異或^11

按位或|

12邏輯與

&&13

邏輯或||

14條件運算

?:15

賦值運算

=、+=、-=、*=、/=、%=

16位賦值運算

&=、|=、<<=、>>=、 >>=

左移與右移--<<(左移乘2)與》(右移除2)

a a*2

a>>n <=> a/(2^n)  例如:a>>1 <=> a/2

1>>n <=>

2^n

按位與-- &

1 清零特定位 (mask中特定位置0,其它位為1,s=s&mask)

例:將char型變數a的最低位置0:a=a&0376=a&11111110

2 取某數中指定位 (mask中特定位置1,其它位為0,s=s&mask)

例:char c;short int a;取出a的低位元組放在c中:c=a&0377=a&0000000011111111

a%(2^n) <=> a&(2^n-1)

a&1 ===>判斷a的最後1位是0還是1,也可判斷奇偶(如果a最後一位為1就輸出1,最後一位為0就輸出0)

例如:a%2<=> a&1, 其中,a&1==0表示a為偶數,a&1==1表示a為奇數(」0偶1奇「)

a%4 <=> a&3

a%8 <=> a&7

a%16 <=> a&15

按位或-- |

常用來將源運算元某些位置1,其它位不變。 (mask中特定位置1,其它位為0 s=s|mask)

例:a=a|oxff=a|0000000011111111

位異或-- ^

1 使特定位的值取反 (mask中特定位置1,其它位為0 s=s^mask)

2 不引入第三變數,交換兩個變數的值

void swap(int x , int y){

x ^= y; y ^= x; x ^= y;

注意:a^a=0  ,  a^0=a

按位取反--~

add(~a,1) *****>負數 等價於 a取反加1

~1不是-1,而是-2

C語言 位運算相關總結

1.位運算符號 取反,不分正負數 標準規定在右邊補0 正數則左邊補0,負數標準沒有規定在左邊補充的數字,分為邏輯右移和算術右移,具體由編譯器決定,windows平台和gcc採取算術右移即負數補1 2.常見的二進位制位的變換操作 去掉最後一位 101101 10110 x 1 在最後加乙個0 1011...

C 中的位運算

程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的。位運算就是直接對整數在記憶體中的二進位制位進行操作。在c 中可以對整型運算物件按位進行邏輯運算 c 支援的位邏輯運算子如下所示 1.位邏輯非 是乙個單目運算子,只有乙個運算物件。0變成1,1變成0。例如 二進位制1000 1101 進行位邏輯...

c 中位運算的一些總結

倘如我們要算a ba b ab,平常只能想到跑乙個for迴圈,乙個乙個的累乘。然而我們可以利用二進位制的思想將b拆開。例 b為11,可拆成 23 21 20 2 3 2 1 2 0 23 21 20 這樣a ba b ab就等於a23 a21 a20 a a a a23 a2 1 a2 0然後我們可...