(-1 >> 1) == -1 であることを踏まえると、
x = -1 から初めて x >>= 1 を何度か繰り返しても、
決して x == 0 にはならない。
よって↓は無限ループに陥る

while (x){
  if (x & 1U) count++;
  x>>=1;
}