c语言进制转换和二分搜索

用C语言编写一个程序,将字符串形式输入的二进制整数转换为对应的十进制数,然后用二分查找法的思想将这个十进制数转换为对应的二进制数并输出。并说明计算机系统执行该程序的过程。(提示:假如需要转换的十进制数是77,则需要在0-127的区间中查找77,查找过程中可以通过对77和区间中间数的比较结果确定对应的二进制数的最高位的值和下一次查找的区间范围,以此类推。) 程序代码和程序执行过程的说明都放入同一个word文档中。

二进制只有0或1,逐个字符读入,不断乘以2

#include <stdio.h>
int main()
{
    char s[9];
    int r[8] = {0};
    gets(s);
    int n = 0,i=0,m=1;
    while(s[i] != '\0')
    {
        n = n*2 + s[i]-'0';
        i++;
    }
    printf("%d\n",n);

    int left = 0;
    int right = 128;
    while(left <= right)
    {
        int mid = (left + right)/2;
        if(n>mid)
        {
            r[m++] = 1;
            left = mid;
        }
        else if(n<mid)
        {
            r[m++] = 0;
            right = mid;
        }
        else
        {
            r[m++] = 1;
            break;
        }

    }
    for(i=0;i<8;i++)
        printf("%d",r[i]);
    return 0;
}

同学,你是不是计科的,报名,学号,加学分