unsigned int reverse_bit(unsigned int value)

来源:互联网 发布:phpstudy配置多个域名 编辑:程序博客网 时间:2024/05/19 20:46

函数的返回值value的二进制位模式从左到右的翻转值

#include<stdio.h>#include<stdlib.h>unsigned int get_value(unsigned int N){unsigned int value=1;for(unsigned int i=0;i<N;++i)//N为多少  将有多少个2相乘{value*=2;}return value;}unsigned int reverse_bit(unsigned int value){//char arr[32]={'0'};//不能这样初始化  这样初始化咋一看你对的//其实它只是把arr数组的第一个元素(即arr[0])初始化位字符零而已char arr[32]={0};int i=31;unsigned int result=0;while(value){arr[i--]=value%2+'0';//摸得的数转化为字符零value>>=1;          //右移一位  相当于除以2}for(;i>=0;i--)arr[i]=arr[i]+'0';//必须把剩下的每个位的数都变成  字符零for(int j=0;j<32;++j){unsigned int ret=arr[j]-'0';//必须定义一个五符号的整数来接受 //如果不用这个临时变量的话,得到的数将会是有符号的整型result+=ret*get_value(j);   //get_value(j)-->根据传进去的位数 得到有多少个2的相乘的结果}return result;}void main(){unsigned int value=25;printf("%u\n",reverse_bit(value));}

0 0