zl程序教程

您现在的位置是:首页 >  后端

当前栏目

算法-二进制中1的个数详解编程语言

2023-06-13 09:20:44 时间
 方法1:   常规思路(如代码中的 NumberOf1Mask),逐位数 1 的个数,执行 32 次循环   (注意,这里使用标志变量,而不是直接对输入变量进行移位,因为如果右移有符号整数,左边补的是符号位,最后进入死循环)  方法2:  小trick(如代码中的 NumberOf1Trick),代码中有多少个 1 就执行多少次循环。 #include  iostream #include  vector #include  algorithm using namespace std; class Solution{ public:  int NumberOf1(int n) {  //return NumberOf1Mask(n);  return NumberOf1Trick(n);  }  int NumberOf1Trick(int n){  int ans = 0;  while(n){  ans ++;  n = n   (n-1);  }  return ans;  }  int NumberOf1Mask(int n){  int ans = 0;  unsigned int mask = 1;  while(mask){  if(n   mask)  ans++;  mask  = 1;  }  return ans;  } int main()  return 0; }

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15311.html

cgo