编写函数:
unsigned int reverse_bit(unsigned int value);
这个函数的返回值value的二进制位模式从左到右翻转后的值。
如:
在32位机器上25这个值包含下列各位:
00000000000000000000000000011001
翻转后:(2550136832)
10011000000000000000000000000000
程序结果返回:
2550136832
#define _CRT_SECURE_NO_WARNINGS 0 #include <stdio.h> unsigned int reverse_bit(unsigned int x) { int data = 0; int i = 0; int num = sizeof(int) * 8; //int有4个字节,每个字节8个比特位,一共循环32次 while(i < num) { if((x >> i) & 1) //如果最低位是1,为真,则进入循环 { data |= 1 << (31 - i); //data与1,再左移31位,下次左移30位,依次递减 } i++; //因为data为0,所以不考虑else } return data; } int main() { int input = 0; printf("请输入一个正整数:\n"); scanf("%d",&input); printf("%u\n",reverse_bit(input));//注意!打印时,打印无符号数 return 0; }