熟練運用位操作符

2021-09-14 04:09:37 字數 1650 閱讀 2892

1.寫乙個函式返回引數二進位制中 1 的個數

分析:int型32個bit,將乙個數化為二進位制,將其向右移位然後和1做按位與,若結果等於1,則它就是1。然後統計個數。

define _crt_secure_no_warnings

#include"stdio.h"

#include"stdlib.h"

return1(int n)

} return count;

}int main()

2.獲取乙個數二進位制序列中所有的偶數字和奇數字,

分別輸出二進位制序列。

void show_num(int n) //最高的偶數字向右移動31位到最後一位,最低的向右移動一位

printf("\n");

for (i = 30; i >= 0; i -= 2)

}int main()

3.輸出乙個整數的每一位。

分析:各位模十便能得到結果,因為不知道又多少位數,因此可以採用遞迴呼叫求其他位數上的數

void show_num(int n)

printf("%d\n", n % 10);

show_num(n / 10); }}

int main()

4.兩個int(32位)整數m和n的二進位制表達中,有多少個位(bit)不同?

輸入例子:

1999 2299

輸出例子:7

分析:首先我們知道乙個數和另乙個數異或,相同為0,不同為1.因此我們可以先對兩數進行異或,然後在進行前面求二進位制1的操作,便能得到想要的結果。

int different(int m,int n)

} return count; }

int main()

總結:在c語言中,有算術操作符,移位操作符,位操作符,賦值操作符,單目操作符,關係操作符,邏輯操作符,條件操作符,逗號表示式。

1、算術操作符有+、-、*、/、%,需要注意的是進行%操作時,兩個運算元必須為整數,返回的是餘數。

2、移位操作符:操作的物件是二進位制,進行左移操作就相當與乘以2,左邊拋棄,右邊補0;進行右移操作時它又分為兩種:(1)邏輯移位,左邊用0填充,右邊丟棄,(2)算數移位,左邊用原該值的符號位填充,0代表正,1代表負,右邊丟棄。

3、位操作符:&(按位與),有兩個運算元,兩者都為1則為1,否則為0;

|(按位或), 有兩個運算元,兩者都為0則為0,否則為1;

^(按位異或),有兩個運算元,相同為0,不同為1;

4、賦值運算子:「=」即為賦值運算子,還有一些有復合效果的賦值運算子:+=、-=、*=、/=、%=、>>=、<<=、&=、|=、^=  

5.單目運算子:即只有乙個運算元進行操作的運算子。有:! - + & sizeof ~ -- ++ *

6.關係運算子:顧名思義判斷兩數的關係,有:> >= < <= != ==一般使用!= == 

7.邏輯操作符:邏輯與和邏輯或,最終只有兩種結果,要麼真要麼假(即要麼0要麼1),邏輯取反,真變假。

8.條件操作符exp?exp2:exp3若exp成立則返回exp2的值,否則返回exp3的值。

9.逗號表示式:只執行最後乙個逗號後的表示式。

10、"."操作符,訪問結構成員

共勉

c語言操作符 位操作符 移位操作符

1 按位操作符 1.1 按位 與 雙目運算子 僅當兩個運算元都為1時,結果為1,否則為0。參與運算的數以補碼方式出現。例 9 5 1 0000 1001 9的補碼 0000 0101 5的補碼 0000 0001 1的補碼 應用 a 通常將某些位清零或保留某些位。例如 將a的高八位清零,保留低八位,...

過載操作符的運用

c 主題 過載操作符 1.過載操作符後,操作符的含義不應該被改變。2.過載操作符後,優先順序和結合性不變。3.過載操作符,應注意如果原操作符是一目操作符,那麼過載後仍應該是一目的,以此類推,特別注意 衝在操作符時使用預設實參是非法的。4.短路操作符被過載後不再具備短路性。5.對於選擇友元 成員 非成...

JavaScript操作符優雅運用

if hasmoney elsehasmoney console.log 今天吃肉 console.log 今天吃素 let weekendplan hasmoney 今天吃肉 今天吃素 if hasmoney hasmoney console.log 今天是工作日 undefined hasmon...