在c语言中有三种求解一个数1的个数的方法 将整数每次右移一位的方式 int Numble(int n) { int count = 0; while (n) { if (n & 1 == 1) count++; n = n >> 1; } return count; } 但这种方法存在的不足是,当这个整数是负数的时候,将无限循环 使整数与1进行与运算,1每次左移一位
int Numble(int n) { int count = 0; int flag = 1; while (flag&n) { count++; flag = flag << 1; } return count; } 整数减1在与这个整数相与
int Numble(int n) { int count = 0; while (n) { count++; n = n&(n - 1); } return count; }
|