求二进制中1的个数,进入死循环问题

求二进制中1的个数
#include 
int main()
{
    int n;
    scanf("%d",&n);
    int count=0;
    while(n>0){//此处进入死循环
        if(n&1){//以我的理解,二进制表示中最后一位如果都是1的话,所得结果应为1,而有一个零那么就该是0,是0即是false为什么会卡死在这里了呢?
            count++;
        }
        n>>1;
    }
    printf("%d\n",count);
    return 0;
}

为什么会进入死循环?

n值没变。
n >>= 1;