JZ15-题解 | #二进制中1的个数#

二进制中1的个数

http://www.nowcoder.com/practice/8ee967e43c2c4ec193b040ea7fbb10b8

题目描述


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


知识点:

  1. 把整数右移动一位和把整数除以2在数学上是相等的,但是在运算效率上,移位运算效率远高于除法运算。
  2. 把一个整数减去1之和再和原来的整数做位与运算,得到的结果相当于把整数的二进制表示中最右边的1变为0.

题解1:采用知识点1


题解2:采用知识点2:位运算 n&(n-1)

class Solution {
public:
     int  NumberOf1(int n) {
         int count = 0;
         while(n){
             n = n&(n-1);
             count ++;
         }
         return count;
     }
};
全部评论

相关推荐

07-25 10:31
门头沟学院 Java
求问各位大佬,笔试都考点啥
投递科大讯飞等公司10个岗位
点赞 评论 收藏
分享
07-30 11:52
门头沟学院 Java
美团暑期实习没投递成功,这次正式批的北斗计划总该有我的一部分了吧!
求职的纳鲁多:大佬投我就不投了,毕竟王不见王,避你锋芒
点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java
allin校招的烤冷...:我靠,今天中午我也是这个hr隔一个星期发消息给我。问的问题还是一模一样的😅
点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
熊大不大:哈哈,你就说你是男生,也是受害者
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务