>>471の件ではどうもありがとうございました
もう一つ質問させてください
以下のPopulation1とPopulation2は同じ結果になるそうです
Population1は>>471のPower2によく似てるので
これは指数計算の変形だと思うのですが、
Population2でも同じ結果になるのが理解できません
何度もすみませんがよろしくお願いします

uint Population1(uint n)
{
  uint population = 0;
  while (n > 0)
  {
    if (n % 2 == 1) population = population + 1;
    n = n / 2;
  }
  return population;
}

uint Population2(uint n)
{
  uint population = 0;
  while (n > 0)
  {
    population = population + 1;
    n = n & n - 1;
  }
  return population;
}