北京化工大学往年考研上机备考题目分享——求二进制逆序数

题目描述:
对于一个十进制数A,将A转换为二进制数,然后按位逆序排列,再转换为十进制数B,我们乘B为A的二进制逆序数。
例如对于十进制数173,它的二进制形式为10101101,逆序排列得到10110101,其十进制数为181,181即为173的二进制逆序数。
代码来源于博主个人,备考题目不代表考试题目、不代表答案解析,仅供作参考

#include
int main()
{
    int a,c=0,k;
    int count;
    int b[16];
    int i=0;
    int j,z;
    scanf("%d",&a);
    while(a>=1)//若为转换为二进制则逆序输出
    {
        k=a%2;
        b[i]=k;
        a=a/2;
        i++;//最后i指向下一位,i表示b的长度
    }
//到这对了
    for(j=0;j<i;j++)
    {
        count=1;
        for(z=1;z<i;z++)
            count*=2;
        for(z=1;z<=j;z++)
            count/=2;
        if(b[j]==1)
            c+=count;
    }
    printf("%d",c);
    return 0;
}

你可能感兴趣的:(资料分享)