1.標頭檔案
1 #ifndef _inc_bitoperation
2 #define _inc_bitoperation
3 #endif
4 /*
5 封裝了所有的位操作運算
6 */
7 #include8 #include9
10 /************************四位元組操作,如int ,long等型別**********************/
11 12 /*置位int數num的第n個位*/
13 void setint(int *num, int n);
14 /*清零int數num的第n個位*/
15 void clearint(int *num, int n);
16 /*統計num中是1的位數,返回位數*/
17 int statintone(int num);
18 /*統計num中是0的位數,返回位數*/
19 int statintzero(int num);
20 /*翻轉乙個int數,即高位和低位互換 0位和31位互換,1位和30維護換返回位數*/
21 int reverseint(int *num);
22 /*以二進位制形式列印乙個整數*/
23 void printfintbinary(int num);
24 /*迴圈左移位的實現num左移n位*/
25 int movetoleft(int num, int n);
26 /*迴圈右移位的實現num右移n位*/
27 int movetoright(int num, int n);
28 /*使用位運算異或實現兩個變數值的交換*/
29 void exchange(int *a, int *b);
30 /*獲取int數num的第n個位的值,0或1*/
31 int getintbit(int num, int n);
32 /*列印乙個int數在記憶體中的二進位製碼*/
33 int printfbincode(int num);
34 /*輸出乙個int數的原碼,正數就是它的二進位製碼,負數就是對應二進位製碼(反碼)的原碼*/
35 void printfsrccode(int num);
36 /*列印乙個unsigned char 型別的二進位製碼*/
37 void printfcharcode(unsigned char s);
38 /*列印乙個浮點數的二進位製碼*/
39 void printffloatcode(float f);
2.原始檔
#include#include/*置位int數num的第n個位*/
void setint(int *num, int n)
*num |= (1 << n);
}/*清零int數num的第n個位*/
void clearint(int *num, int n)
*num &= ~(1 << n);
}/*統計num中是1的位數,返回位數*/
int statintone(int num)
return count;
}/*統計num中是0的位數,返回位數*/
int statintzero(int num)
return count;
}/*翻轉乙個int數,即高位和低位互換 0位和31位互換,1位和30維護換返回位數*/
int reverseint(int *num)
else
tem = tem >> 1;
}return num;
}/*以二進位制形式列印乙個整數*/
void printfintbinary(int num)
}/*迴圈左移位的實現num左移n位*/
int movetoleft(int num,int n)
else
}return num;
}/*迴圈右移位的實現num右移n位*/
int movetoright(int num, int n)
else
}return num;
}/*使用位運算異或實現兩個變數值的交換*/
void exchange(int *a, int *b)
/*獲取int數num的第n個位的值,0或1*/
int getintbit(int num, int n)
int t = (num & (1 << n));
if (t == 0)
else
}/*列印乙個int數在記憶體中的二進位製碼,正數就是它的原碼,負數就是它的補碼*/
int printfbincode(int num)
else
n--;
}}/*輸出乙個int數的原碼,正數就是它的二進位製碼,負數就是對應二進位製碼(反碼)的原碼*/
void printfsrccode(int num)
else
}/*列印乙個unsigned char 型別的二進位製碼*/
void printfcharcode(unsigned char s)
else
n--;
}}/*列印乙個浮點數的二進位製碼*/
void printffloatcode(float f)
}
3.**說明:包括標頭檔案和原始檔,封裝了許多位操作函式,都是經過實際測試,可以直接使用
c語言的位操作
c語言的位操作最常用的地方就是用在對暫存器的寫值上。一.基本的一些概念 1.位與 操作 1 1 1 1 0 0 0 0 0 特點 只有全是1的時候才是1,其他情況都是0.總結 任何數和0位與就是0,和1位與沒有變化,所以位與常用在清零上 清零用位與 2.位或 操作 1 1 1 1 0 1 0 0 0...
C語言位操作
在電腦程式中,資料的位是可以操作的最小資料單位,理論上可以用 位運算 來 完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做資料變換使用,但是,靈活的位操作可以有效地提高程式執行的效率。c語言提供了位運算的功 能,這使得c語言也能像組合語言一樣用來編寫系統程式。位運算子c語言提供了六種位運算...
c語言位操作
位運算 and與 有一位為0 運算就為0 想獲取高四位,a a 0xf0 簡寫 a 0xf0 清零 一三五七位清零 a a 0x55 檢測位 檢測第三位 a a 0x04 遮蔽高四位,保留低4 位 a a 0x0f 統計2進製a中1的個數 1 include2 int main 3 11 print...