[剑指Offer] 二进制中1的个数

问题描述

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

分析

n = n & (n-1) 可以除去n的二进制位中最后一个1

int  NumberOf1(int n) {
    int count = 0;
    while (n != 0) {
        n = n & (n - 1);
        ++count;
    }
    return count;
}
posted @ 2020-05-24 14:17  arcsinW  阅读(127)  评论(0编辑  收藏  举报