自学新手:二进制位反置函数,请大虾指点。
程序代码:
#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'); }