位运算包含运算:与、或、异或、左移和右移。
面试题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 创建
一个用于存放所有笔记和信息的位置
没有评论:
发表评论