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

来源:互联网 发布:核盾网络验证qq群答案 编辑:程序博客网 时间:2024/06/04 01:04

计算机组成原理中的与或非,算术移位,逻辑移位很重要啊
看不懂了,把数字化成二进制模拟一下。

n & (~n + 1) 表示的是 n 的二进制最右边 1及其以后的值
public int NumberOf1(int n) {        int count = 0;        while(n != 0){            int a =  n & (~n + 1);            n = n - a;            count++;        }        return count;    }}
阅读全文
0 0