一、一些面試題
例一、用乙個表示式,判斷乙個數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語言提供了六種位運算子 ...