★编写函数:unsigned int reverse_bit(unsigned int value);这个函数的返回值value的二进制位模式从左到右翻转后的值。 #include<stdio.h> #include<stdlib.h> #include<math.h> unsigned int reverse_bit(unsigned int value) { unsigned int sum = 0; int arr[32], a = 0, b = 0; int count1 = 0, i = 0; for (i = 0; i < 32; i++) //先得到输入数的二进制序列存入数组中 { a = value & 1; b = value >> 1; value = b; arr[i] = a; } printf("输入值的二进制序列为:"); //然后逆向输出 for (i = 31; i >= 0; i--) { count1++; if (count1 % 9 == 0) //count用于序列每八位整齐排列 { count1++; printf(" "); } printf("%d", arr[i]); } printf("\n"); int count2 = 0; printf("翻转后的二进制序列为:"); for (i = 0; i < 32; i++) { count2++; if (count2 % 9 == 0) { count2++; printf(" "); } sum +=((value>>i)&1)*pow(2, 31 - i); //求得该二进制序列的翻转序列,pow函数需调用math库 printf("%d", arr[i]); } return sum; } unsigned int return_bit(unsigned int value) //return_bit函数用于求得返回值 { unsigned int ret = 0; int i = 0; for (i = 0; i < 32; i++) { ret <<= 1; ret |= ((value >> i) & 1); } return ret; } int main() { unsigned int value = 0; int ret = 0; printf("请输入一个正数:"); scanf("%d",&value); reverse_bit(value); ret = return_bit(value); printf("\nBack_Value:%u\n", return_bit(value)); system("pause"); return 0; }
本文出自 “温暖的微笑” 博客,请务必保留此出处http://10738469.blog.51cto.com/10728469/1705915
原文:http://10738469.blog.51cto.com/10728469/1705915