星期三, 二月 17, 2016

面试题10:二进制中1的个数

位运算包含运算:与、或、异或、左移和右移。

 

面试题10:二进制中1的个数

 

//题目描述

//

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

#include<iostream>

using namespace std;

class Solution {

public:

     int  NumberOf1(int n) {

int cnt=0;

unsigned int val=(unsigned int)n;

while(val){

if(val&1)cnt++;

val>>=1;

}

return cnt;

     }

};

int main(){

Solution test=Solution();

cout<<test.NumberOf1(-1);

system("pause");

return 0;

}

若对符号不进行处理,则当要求的数为负数时,做右移运算会陷入死循环。

 

已使用 Microsoft OneNote 2010 创建
一个用于存放所有笔记和信息的位置

没有评论:

发表评论