test8

    xiaoxiao2021-04-16  208

    1.写一个函数返回参数二进制中一的个数 比如:15 0000 1111 4个1

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int count_one_bits(unsigned int value) { int count = 0; int i = 0; for (i = 0; i < 32; i++) //整形4个字节,32位 { if(value&1==1) { count++; } value = value >> 1; } return count; } int main() { int x = 0; int ret = 0; printf("请输入一个二进制数:\n"); scanf("%d", &x); ret=count_one_bits(x); printf("这个数在二进制中1的个数为:%d", ret); system("pause"); return 0; }

    2.获取一个数二进制序列中所有偶数位和奇数位,分别输出二进制序列。

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int num = 0; printf("请输入一个整数:\n"); scanf("%d", &num); int i = 0; printf("偶数序列为:\n"); for (i = 31; i >= 1; i -= 2) { printf("%d", ((num >> i) & 1)); //最高的偶数位向右移动31位到最后一位 } //最低偶数位向右移动一位到最后一位 printf("奇数序列为:\n"); for (i = 30; i >= 0; i -= 2) { printf("%d", ((num >> i) & 1)); //最高的奇数位向右移动30位到最后一位 //最低奇数数位向右移动0位到最后一位 } system("pause"); return 0; }

    3.输出一个整数的每一位。

    #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main() { int n = 0; int i = 0; printf("请输入一个整数:\n"); scanf("%d", &n); while (n) { i = n % 10; n = n / 10; printf("%d", i); } 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 fun(int value1, int value2) { int count = 0; int num = 0; while (num < 32) { if ((value1 & 1) != (value2 & 1)) { count++; } value1 >>= 1; value2 >>= 1; num++; } printf("共有%d个bit位不同\n", count); } int main() { printf("请输入两个整形数字:\n"); int num1 = 0; int num2 = 0; scanf("%d,%d", &num1, &num2); fun(num1, num2); system("pause"); return 0; }

    最新回复(0)