1.写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1 程序原型: int count_one_bits(unsigned int value) { // 返回 1的位数 }
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int count_one_bits(unsigned int num) { int cout = 0; while (num) { cout++; num = num&(num - 1); } return cout; } int main() { int num = 0; printf("请输入: "); scanf("%d", &num); int ret = 0; ret = count_one_bits(num); printf("二进制中1的个数=%d\n",ret); system("pause"); return 0; } #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int count_one_bits(unsigned int num) { int cout = 0; while (num) { if (num % 2 == 1) { cout++; } num = num / 2; } return cout; } int main() { int num = 0; printf("请输入: "); scanf("%d", &num); int ret = 0; ret = count_one_bits(num); printf("二进制中1的个数=%d\n", ret); system("pause"); return 0; }2.获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<stdlib.h> int main() { int num = 0; int a[32] = { 0 }; scanf("%d", &num); int cout = 0; int i = 0; while (num) { a[i] = num % 2; num = num / 2; cout++; i++; } printf("奇数序列:\n"); for(i = cout; i >= 0; i = i - 2) { printf("%d ", a[i]); } printf("\n"); printf("偶数序列: \n"); for (i = cout - 1; i >= 0; i = i - 2) { printf("%d ", a[i]); } printf("\n"); system("pause"); return 0; }
3. 输出一个整数的每一位。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<stdlib.h> void printfnum(int num) { int ret = 0; while (num>0) { ret = num % 10; printf("%d ", ret); num = num / 10; } printf("\n"); } int main() { int num = 0; printf("请输入一个整数 :"); scanf("%d", &num); printf("打印每一位: "); printfnum(num); system("pause"); return 0; }4.编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同? 输入例子: 1999 2299 输出例子: 7
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<stdlib.h> void PrintfNum(int a,int b) { int cout = 0; int i = 0; for (i = 0; i < 32; i++) { int ret = 0; ret = (a >> i) ^ (b >> i);//分别让每一位进行异或 if ((ret & 1) == 1) //判断是否为1 cout++; } printf("有%d个比特位不同\n",cout); } int main() { int a = 0; int b = 0; printf("请输入a: "); scanf("%d", &a); printf("请输入b: "); scanf("%d", &b); PrintfNum(a,b); system("pause"); return 0; }