剑指offer 二进制中1的个数
Posted John_yan15
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer 二进制中1的个数相关的知识,希望对你有一定的参考价值。
题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
代码:
1 class Solution { 2 public: 3 int NumberOf1(int n) { 4 int flag = 1; //设置 1 为标志位 5 int count = 0; 6 while ( flag != 0 ){ //由于int类型共32位故在flag左移出界时,跳出循环 7 if( n & flag ) //& 按位与,即flag只有一位为 1 故 只有n对应位也为1时才可 8 count ++; 9 flag = flag << 1; //左移一位 10 } 11 return count; 12 } 13 };
我的笔记:使用 & 按位与符号并设置一个标志位 flag 与 n 进行 与 操作。
注:负数在右移时是默认左侧补 1,而正数是补 0 。
以上是关于剑指offer 二进制中1的个数的主要内容,如果未能解决你的问题,请参考以下文章