C語言中的位運算

2021-06-20 13:13:57 字數 764 閱讀 6651

一、一些面試題

例一、用乙個表示式,判斷乙個數x是否為2的n次方,不用迴圈語句。

結果:!(x&(x-1))

例二、取兩個變數中較大數,不適用if,?,switch或其他判斷語句。

結果:int max = (a+b+abs(a-b))/2

例三、不使用中間變數交換a,b。

結果: 

a = a^b;

b = a^b;

a = a^b; 例

四、取0的反碼。

錯誤寫法:

unsigned int zero = 0;

unsigned int zerocomplement = 0xff;

正確寫法:

unsigned int zero = 0;

unsigned int zerocomplement = ~zero;

說明:需要考慮到在不同字長的機器上的移植性,錯誤寫法預設16位,只能在16位機上執行,二使用位運算寫的**將不受字長限制,具有很好的移植性。

例五、下面**:

int f(int x, int y)

return (x&y+(x^y)>>1);}

二、嵌入式系統中的典型應用。

應用一:將暫存器中的某一位置1或則清0,保持其他位不變。

int l_data;

void setbit(int pos)//將某一位置位的操作

}void clrbit(int pos)//將某一位清0的操作

}

C語言中的位運算

0 推薦 在電腦程式中,資料的位是可以操作的最小資料單位,理論上可以用 位運算 來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做資料變換使用,但是,靈活的位操作可以有效地提高程式執行的效率。c語言提供了位運算的功能,這使得c語言也能像組合語言一樣用來編寫系統程式。位運算子c語言提供了六種...

C語言中的位運算

c語言中的位運算有六個 按位與 按位或 按位異或 取反 左移 右移 除 以外其餘均為二元運算子,即要求運算子兩側均有乙個運算量 位運算量只能為整型或字元型,不能為實型資料。1.按位與 0 0 0 0 1 0 1 0 0 1 1 1 3 5 00000011 00000101 00000001 1 的...

C語言中的位運算

在電腦程式中,資料的位是可以操作的最小資料單位,理論上可以用 位運算 來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做資料變換使用,但是,靈活的位操作可以有效地提高程式執行的效率。c語言提供了位運算的功能,這使得c語言也能像組合語言一樣用來編寫系統程式。位運算子c語言提供了六種位運算子 ...