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...