Work_8
写一个函数返回参数二进制中 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; for (int i = 0; i < 8; i++){ if ((value >> i) & 1){ count++; } } return count; } int main(){ int input; printf("请输入一个整数:\n"); scanf("%d", &input); printf("该整数的二进制中1的个数为:%d", Count_one_bits(input)); printf("\n"); system("pause"); return 0; }
获取一个数二进制序列中所有的偶数位和奇数位,
分别输出二进制序列。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> void Bit(int input){ int temp = 0; printf("该整数二进制的偶数位为:\n"); for (int i = 31; i > 0; i = i - 2){ temp = (input >> i) & 1; printf("%d ", temp); } printf("\n"); printf("该整数二进制的奇数位为:\n"); for (int i = 30; i >= 0; i = i - 2){ temp = (input >> i) & 1; printf("%d ", temp); } } int main(){ int input; printf("请输入一个整数:\n"); scanf("%d", &input); Bit(input); printf("\n"); system("pause"); return 0; }
输出一个整数的每一位。
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> void Number(int input){ //从最高为开始打印 if (input < 9){ printf("%d ", input); return; } Number(input / 10); printf("%d ", input % 10); return; ////从最低位开始打印 //if (input > 9){ // printf("%d ", input % 10); // return Number(input / 10); //} //printf("%d ", input); } int main(){ int input ; printf("请输入一个整数:\n"); scanf("%d", &input); printf("该整数的每一位为:\n"); Number(input); printf("\n"); system("pause"); return 0; }
编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int Compare(int input1, int input2){ int count = 0; for (int i = 0; i < 16; i++){ if (((input1 >> i) & 1) != ((input2 >> i) & 1)){ count++; } } return count; } int main(){ int input1, input2; printf("请输入两个整数:\n"); scanf("%d %d", &input1, &input2); printf("%d", Compare(input1, input2)); printf("\n"); system("pause"); return 0; }