Онлайн компилятор C

#include <stdio.h> int main() { int n,i,a=0,c; scanf("%d",&n); for (i=31;i>0;i--) { n=n>>i; if (n>0) { c=32-a; printf ("%d",c); return 0; } else { a++; } } printf ("%d",c); return 0; }
1) Этот код пытается определить количество значащих битов введённого целого числа `n`, используя побитовый сдвиг вправо.  

2) Подсказки:  
- Обрати внимание на начальное значение переменной `i` в цикле и как оно изменяется.  
- Проверь, как работает условие `if (n>0)` и что происходит с переменной `a` в ветке `else`.