二进制中1的个数

来源:互联网 发布:南宁扶贫云数据平台 编辑:程序博客网 时间:2024/06/05 19:43

//输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

#include<vector>#include<iostream>using namespace std;int  NumberOf1(int n) {               int count=0;                 while(n!=0){             count++;             n=n&n-1;//妙用         }            return count;     }void main(){  cout<<NumberOf1(-1);  while(1);}

巧在n&n-1上,每次去掉右侧的1

其他妙用还有: 判断一个数是否是2的方幂:

if(  n > 0  &&  (n & (n - 1)) == 0  )
原创粉丝点击