看到一个代码有谁可以解释这个的执行过程吗?学习

#include
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;

}

这不是数学题吗,运行一下对着结果就能看懂代码