C語言_位運算子的實現舉例(上)
阿新 • • 發佈:2018-12-19
1.
返回引數二進位制中 1 的個數。
比如:
15
0000 1111
4 個 1
程式碼如下:
//返回引數二進位制中1的個數 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int count_one_bits(int value) { int count = 0; for (int i = 0; i < 32; i++) { if (((value >> i) & 1) == 1) { count++; } } return count; } int main() { printf("請輸入一個數字:\n"); int value = 0; scanf("%d", &value); printf("二進位制中1的個數: %d\n",count_one_bits(value)); system("pause"); return 0; }
2.
獲取一個數二進位制序列中所有的偶數位和奇數位,分別輸出二進位制序列。
程式碼如下:
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> void Print(int n) { int i = 0; for (i = 31; i > 0; i -= 2) { printf("%d", (n >> i) & 1); } printf("\n"); for (i = 30; i >= 0; i -= 2) { printf("%d", (n >> i) & 1); } } int main() { printf("請輸入一個數字:\n"); int value = 0; scanf("%d", &value); Print(value); system("pause"); return 0; }
3.
兩個int(32位)整數m和n的二進位制表達中,有多少個位(bit)不同? 輸入例子: 1999 2299 輸出例子:7
程式碼如下:
//輸出兩個數不同的位元位個數 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int differ1(int m,int n) { int count = 0; for (int i = 0; i < 32; i++) { if (((m >> i) & 1) != ((n >> i) & 1)) { count++; } } return count; } int main() { printf("請輸入兩個數字:\n"); int m = 0,n = 0; scanf("%d %d", &m,&n); printf("不同的bit位數為:%d\n", differ1(m, n)); system("pause"); return 0; }