码迷,mamicode.com
首页 > 其他好文 > 详细

位运算

时间:2017-08-12 23:58:32      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:public   输出   color   进制   number   logs   while   二进制   一个   

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

public class Solution {
    public int NumberOf1(int n) {
}
}

思路:用 (n&1)==1 来判断二进制最右边是否是1,是1 的话说明最右边一位是1,继续将n右移一位,继续判断,不过这样会出现问题,如果n是负数,不断将n右移,第一位始终用1补齐,这样会陷入死循环。

换一种思路是,用(n&1)!=0来判断,如果不等于0,说明最后一位不是0,将1不断左移,继续判断,只要不等于零就说明右移那一位是1.

public class Solution {
    public int NumberOf1(int n) {
   int count=0;
  int flag=1;
      while(flag!=0){
             if((n&flag)!=0){
                 ++count;
               }
        flag<<1;
      }
        return count;
  }
}

 

位运算

标签:public   输出   color   进制   number   logs   while   二进制   一个   

原文地址:http://www.cnblogs.com/wxw7blog/p/7351887.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!