题解 | #二进制中1的个数#

二进制中1的个数

https://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8

//方法1
//int NumberOf1(unsigned int n ) 
//{
//    int count = 0;
//    while(n)
//    {
//        if ( 1==n%2)
//        {
//            count++;
//        }
//        n=n/2;
//    }
//    return count;
//}
//方法2
//int NumberOf1(unsigned int n )
//{
//    int count = 0;
//    for(int i = 0;i<32;i++)//一共32位,循环32次
//    {
//        if((n&1)==1)
//00000000000000000000000000000001----1的补码
//00000000000000000000000000001010----10的补码
//00000000000000000000000000000000----10&1==0
//00000000000000000000000000000101----10>>1
//00000000000000000000000000000001----(10>>1)&1==1   count+1
//测一位右移有一位
//        {
//            count++;
//        }
//        n = n>>1;
//    }
//    return count;
//}
//方法3
int NumberOf1(unsigned int n )
{
    int count = 0;
    while(n)
    {
//00000000000000000000000000001010----10的补码----n=10
//00000000000000000000000000001001----(10-1)的补码
//00000000000000000000000000001000----10&(10-1)==8---n=8
//00000000000000000000000000000111----(8-1)
//00000000000000000000000000000000----0
        n=n&(n-1);
        count++;
    }
    return count;
}

全部评论

相关推荐

豆泥🍀:同26届,加油,我也还没找到查看图片
点赞 评论 收藏
分享
04-09 09:47
门头沟学院 Java
Arbelite_:2-3k,这工资还不如去摇奶茶
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务