查看二进制中1的个数

来源:互联网 发布:火花棱镜淘宝 编辑:程序博客网 时间:2024/04/30 17:45

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
#include <iostream>using namespace std;//二进制中1的个数int NumberOf1(int n){int count = 0;while(n){n = n & (n-1);count++;}return count;}
void Test(int number, unsigned int expected){    int actual = NumberOf1(number);    if(actual == expected)        printf("Solution1: Test for %p passed.\n", number);    else        printf("Solution1: Test for %p failed.\n", number);    printf("\n");}int main(int argc, char* argv[]){    // 输入0,期待的输出是0    Test(0, 0);    // 输入1,期待的输出是1    Test(1, 1);    // 输入10,期待的输出是2    Test(10, 2);    // 输入0x7FFFFFFF,期待的输出是31    Test(0x7FFFFFFF, 31);    // 输入0xFFFFFFFF(负数),期待的输出是32    Test(0xFFFFFFFF, 32);    // 输入0x80000000(负数),期待的输出是1    Test(0x80000000, 1);    return 0;}


0 0