1.题目
unsigned int reverse_bit(unsigned int value);
这个函数的返回 值value的二进制位模式从左到右翻转后的值。
2.程序代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <Windows.h>
#include <math.h>
unsigned int reverse_bit(unsigned int value)
{
int arr[32] = {0};
int i = 0;
int count = 0;
int num = 0;
for (i = 0; i < 32; i++)//因为二进制为32位,所以执行32次循环
{
arr[i] = (value & 1);//按位与1,得到的是该位的二进制所对应的值
value = value >> 1;//向右移一位,计算下一个二进制位的值
}
for (i = 0; i < 32; i++)
{
printf("%d", arr[i]);
num = arr[i] * pow(2, (31 - i));//pow为计算次方的函数
count = count + num;
}
printf("\n");
return count;
}
int main()
{
int input = 0;
int num = 0;
printf("请输入一个数字:");
scanf("%d", &input);
num = reverse_bit(input);
printf("%u\n", num);//%u是十进制无符号整数
system("pause");
return 0;
}