编写函数:
unsigned int ReverseBit(unsigned int value);
这个函数的返回值value的二进制位模式从左到右翻转后的值。
如:
在32位机器上25这个值包含下列各位:
00000000000000000000000000011001
翻转后:(2550136832)
10011000000000000000000000000000
程序结果返回:
2550136832
代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//unsigned int reverse_bit(unsigned int value);
//这个函数的返回值value的二进制位模式从左到右翻转后的值。
unsigned int ReverseBit(unsigned int value){
//利用数组实现
int j = 0;
int arr[32] = { 0 };
double num = 0;
int n = 0;
//将十进制转化为反向的二进制,并利用while循环将其存储在数组中
while (j < 32){
arr[j] = value % 2;
value /= 2;
j++;
}
//反向的二进制转化为十进制
for (j = 31; j >= 0;--j){
num += (arr[j] * pow(2, n));
n++;
}
return num;
}
int main(){
int num = 0;
printf("请输入一个数字:\n");
scanf("%d", &num);
printf("%u\n", ReverseBit(num));
system("pause");
return 0;
}
运行结果: