自学新手:二进制位反置函数,请大虾指点。
											
程序代码:#include <stdio.h>
unsigned reverse_bits(unsigned );  //反值二进制位函数
void btostr(unsigned );           //数值的二进制以字符串形式排列,并显示。
int main(void)
{
    unsigned a=25;
    btostr(a);
    printf("reverse value is %u\n",reverse_bits(a));
    printf("and now a is %u",a);
    return 0;
}
unsigned reverse_bits(unsigned v)
{
    unsigned a=0;
    signed int t=1,i=0;
    while(t>0)                     //求int型数的bit位数
    {               
        t<<=8;    
        i+=8;       
    }
    printf("i=%d\n",i);            //查看bit位数
    while(v!=0)                  
    {                             
        a=a|((v&1u)<<--i);         //最后一位前移bit位减1位
        v>>=1;                     //次一位前移bit位减2位
        puts("Now a is:");        
        btostr(a);                
        puts("Now v is:");        
        btostr(v);               
    }
    return a;
}
void btostr(unsigned v)         
{
    int i=32;
    char str[33];
    str[32]='\0';
    while(i>0)
    {
        str[--i]=v&1?'1':'0';
        v>>=1;
    }
    i=0;
    while(str[i])
    {
        printf("%c",str[i++]);
        if(i%4==0)
            putchar(' ');
    }
    putchar('\n');
}
										
					
	


											
	    

	