首页 > 代码库 > 位运算
位运算
输入一个整数,输出该数二进制表示中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; } }
位运算
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。