C語言位操作的演算法

2021-10-22 01:34:49 字數 2751 閱讀 4441

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