2 5 位運算分析

2021-07-27 05:35:15 字數 875 閱讀 6418

1、~ 按位取反

& 按位與

| 按位或

^ 按位異或

2、結合律   a&b&c <=> (a&b)&c <=> a&(b&c)

交換律   a&b  b&a

3、左移和右移注意點

·左移運算子<< 將運算子的二進位制位左移

·規則:高位丟棄,低位補0

·右移運算子》 把運算子的二進位制位右移

·規則:高位補符號位,低位丟棄

4、防錯準則:

·避免位運算子,邏輯運算子和數**算符同時出現在乙個表示式中

·當位運算子,邏輯運算子和數**算符需要同時參與運算時,盡量使用括號()來表達計算次序

5、左移n位相當於乘以2的n次方,但效率比數**算符高

右移n位相當於除以2的n次方,但效率比數**算符高

6、交換兩個數的三種方法

任意型別都可以

#define swap1(a,b) \

第二種方法如果a很大或者b很大,就會溢位

#define swap2(a,b) \

使用領域int型

#define swap3(a,b) \

7、面試題詳解:

有乙個數列,其中的自然數都是以偶數次數的形式出現,只有乙個自然數出現的次數是奇數,

編寫程式找出這個數

#include

#define dim(a) (sizeof(a)/sizeof(*a))

int main()

;int find = 0;

int i = 0;

for (i = 0; i < dim(a); i++)

printf ("find = %d\n", find);

return 0;

}

位運算子分析

注意按位運算子 和 與邏輯運算子 和 完全是兩碼事,別混淆了。結合律 a b c a b c a b c 交換律 a b b a 左移和右移 左移運算子 右移運算子 是雙目運算子。其功能把 左邊的運算數的各二進位全部右移若干位,右邊的數指定移動的位數。但注意 對於有符號數,當為正數時,最高位補0 而...

16 位運算子分析

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 4.4.5 一 位運算子分析 1 c語言中的位運算子 位運算子直接對bit位進行操作,其效率最高。2 左移和右移注意點 左運算元必須為整數型別 char 和 short被隱式轉換為int後...

位運算(1) 初識位運算

前段時間數電課學了些進製轉換,還有與或非等邏輯運算,如今再來看看位運算,倒輕鬆了不少。很早就想寫些非總結性部落格了,奈何還是太懶。也也不知怎的突然又來了興致,趕忙寫下這篇部落格。廢話不多說,今天準備總結總結關於位運算的知識。程式中的所有數在計算機記憶體中都是以二進位制的形式儲存的,即0 1兩種狀態,...