二进制相关代码

    xiaoxiao2022-07-07  158

    1.找出两个数在二进制表示下有多少位不同 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int count = 0; int count_one_bits(int x) { if (x != 0) { count++; count_one_bits(x & (x - 1)); } return count; }

    int diff(int x,int y) { int num = 0; int ret = 0; num = x ^ y; ret = count_one_bits(num); return ret; } int main() { int num1 = 0; int num2 = 0; int ret = 0; printf(“please input two number=>\n”); scanf("%d%d", &num1, &num2); ret = diff(num1, num2); printf("%d\n", ret); system(“pause”); return 0; } 2.打印一个数的每一位 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> void Print(int n) { if (n > 9) { Print(n / 10); } printf("%d “, n % 10); } int main() { int num = 0; printf(“please input a number=>\n”); scanf(”%d", &num); Print(num); printf("\n"); system(“pause”); return 0;

    } 3.将一个数在二进制表达时的偶数位和奇数位分别输出 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<math.h> int count = 0; int n = 0; int Print( int x) { int i = 0; int j = 0; int z = 0; int arr1[16] = { 0 }; int arr2[16] = { 0 }; for (i = 0; i < 32; i += 2) { arr1[j] = ((x >> i) & 1); j++; } for (i = 1; i < 32; i += 2) { arr2[z] = ((x >> i) & 1); z++; } printf(“奇数位数列=>”); for (i = 15; i >= 0; i–) { printf("%d", arr1[i]); } printf("\n"); printf(“偶数位数列=>”); for (i = 15; i >= 0; i–) { printf("%d", arr2[i]); } printf("\n"); } int main() { int num = 0; printf(“please input a number =>\n”); scanf("%d", &num); Print(num); system(“pause”); return 0; } 4.输出一个数在二进制表达下有多少个1 #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int count = 0; int count_one_bits(int x) { if (x != 0) { count++; count_one_bits(x & (x - 1)); } return count; } int main() { int num = 0; int ret = 0; printf(“please input number=>\n “); scanf(”%d”, &num); ret = count_one_bits(num); printf("%d中有%d个1\n", num, ret); system(“pause”); return 0; }

    最新回复(0)