首页 > 试题广场 >

怎么判断一个数是二的倍数,怎么求一个数中有几个1,说一下你的

[问答题]

怎么判断一个数是二的倍数,怎么求一个数中有几个1,说一下你的思路并手写代码

int count1(int num) {
    int res = 0;
    while (num > 0) {
        num &= num - 1;
        ++res;
    }
    return res;
}

编辑于 2019-07-05 09:48:49 回复(2)
 
int mian()
{
    int num = 119;
    /*判断是否是二的倍数*/
    if (num & 0b1)
    {
        cout<<"odd"<<endl;
    }
    else
    {
        cout<<"even"<<endl;
    }

    /*10进制1的个数*/
    int m10 = num, sum10 = 0;
    while (m10)
    {
        if (m10 % 10 == 1)
            sum10++;
        m10 /= 10;
    }
    cout<<sum10<<endl;

    /*2进制1的个数*/
    int m2 = num, sum2 = 0;
    while (m2)
    {
         sum2++;
         m2 = m2 & (m2-1);
    }  cout<<sum10<<endl;
    return 0;
}

发表于 2019-04-25 13:14:03 回复(0)
直接将int转换为string
int work(int &a)
{
	int num = 0;
	string str = to_string(a);
	for (int i = 0; i < str.size(); i++)
	{
		if(str[i] == '1')
			num++;
	}
	return num;
}

发表于 2020-07-21 17:34:22 回复(0)
m=m&(m-1),求1的个数
发表于 2020-03-15 17:11:59 回复(2)
遇到过求一个数的二进制表示中1的个数的,我的思路是将这个数分别与1到64进行与运算,不为0就加1
发表于 2020-03-14 18:38:35 回复(0)
int a;
 scanf("%d",&a);
 if((a & 0x0001) == 0)
 {
  printf("ou shu\n");
 }
 int i = 0;
 int num = 0;
 for(i= 0;i<32;i++)
 {
 
  if((a & 1<<i) != 0)
   num++;
 }
 printf("num 1:%d\n",num);
发表于 2019-09-29 15:11:57 回复(0)
2的倍数应该大于等于2吧
发表于 2019-09-24 16:50:54 回复(0)
int check = 1111112;
    (check%2 == 0)?(cout<<"yes\n"):(cout<<"no\n");

    
    int num = 0;
    while (check > 0)
    {
        if (check%10 == 1)
        {
            num++;
            check = (check-1) / 10;
        }else{
            check = (check-(check%10))/10;
        }

    }
    cout<<num<<endl;
发表于 2019-07-03 17:27:52 回复(0)