编写一个函数的返回值value的二进制位模式从左到右翻转后的值

来源:互联网 发布:网络教育专科学校 编辑:程序博客网 时间:2024/06/06 01:54

编写函数: 

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;}




阅读全文
0 0
原创粉丝点击