题解 | #求int型正整数在内存中存储时1的个数#

求int型正整数在内存中存储时1的个数

http://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9

计算有多少个1,类似于计算该整型数的汉明重量。n&(n-1)的操作表示将n最右边的一个1变为0,重复操作既可计算总共1的个数。

#include <stdio.h>
int main(){
    int n;
    int k = 0;
    scanf("%d",&n);
while(n){
    n&=(n-1);
    k++;
}
    printf("%d",k);
    return 0;
}
全部评论
牛逼
1 回复 分享
发布于 2023-03-02 23:12 湖北
0x08(二进制位1000)减一就是二进制数0111,两个二进制数相与得到的结果就是0000,用这个方法记录其中1的个数
点赞 回复 分享
发布于 03-04 13:03 陕西
我也没看懂
点赞 回复 分享
发布于 2024-03-26 17:21 浙江
能有人解释一下吗?没有看懂
点赞 回复 分享
发布于 2023-11-30 22:05 上海
妙啊
点赞 回复 分享
发布于 2023-04-08 11:59 广东
太强了
点赞 回复 分享
发布于 2022-10-12 14:18 上海

相关推荐

码农索隆:想看offer细节
点赞 评论 收藏
分享
星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
评论
60
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务