例如6的二进制为110,反转后就是011(倒过来了)
将偶数二进制反转,那为啥不是奇数呢,因为奇数二进制本身就是对齐的,反转也反转不了。
这段代码前面比较繁琐的就是算出整数最高位是多少,有点冗余了,但是囿于水平和时间,暂时只考虑到了这中方法,若有更好的方法,请一定要跟我指正。
int reverse_bin(int one)
{
int bit, rn = 0;
int ones,num = 0;
/* 奇数反转过来就是其本身 */
if( one%2 != 0 )
return one;
ones = one;
while(1)
{
if( (ones/8) == 0)
{
if( (ones/4) == 0 )
if( (ones/2) == 0 )
num += 1;
else
num += 2;
else
num += 3;
break;
}
else if( (ones/8) == 1 )
{
num += 4;
break;
}
else // 得到的数大于2及以上
{
ones = ones / 8;
num += 3;
continue;
}
}
while(one)
{
bit = one % 2;
num--;
rn = rn + bit*pow(2, num);
one = one/2;
}
return rn;
}