Сначала вы можете изменить свое начальное число таким образом, чтобы его i-й бит находился в позиции 7-i.
Это можно сделать с помощью следующего кода:
int bit_reverse(char x)
{
int r=0;
for (int i=0; i<8; i++){
r=2*r + x%2;
x=x/2;
}
return r;
}
На самом деле, функция использует целое число r в качестве стека. Первые извлеченные биты сдвигаются в верхние позиции путем последовательного умножения на 2.
Затем вам просто нужно применить свой исходный код к тому, что возвращает функцию bit_reverse.
int main(){
int x;
scanf("%d", &x);
int r=bit_reverse(x);
int i;
for(i=0;i<8;i++){
printf("%d",r%2);
r=r/2;
}
return 0;
}