Это потому, что вы не меняете n.
Для n = 25 мы имеем (n >> 1) = 12, следовательно, он печатает ноль.А так как вы не меняете n, он печатает ноль для всех k.
Вы можете изменить его следующим образом:
#include
void main()
{
int n=25,k=32;
printf("binary equivalent\n");
while(k!=0)
{
if((n & 0x01)!=0)
printf("1");
else
printf("0");
k--;
n = n >> 1;
}
}
Однако он напечатает двоичное представление в обратном виде.