文档章节

IT公司100题-28-整数的二进制表示中1的个数

关西大汉弹琵琶
 关西大汉弹琵琶
发布于 2016/01/08 15:29
字数 282
阅读 58
收藏 5

问题描述:

输入一个整数n,求n的二进制表示中,一共有多少个1。例如n=8,二进制表示为00001000,二进制表示中有1个1。

 

分析:

如果一个数n不为0,那么n-1的二进制表示,与n的二进制表示相比,n的二进制表示最右边的1变为0,而最右边的1所对应的0全部变为1。其余位不受影响。

例如:n的二进制表示为****1000,则n-1的二进制表示为****0111,则n&(n-1)的二进制表示为****0000。将n二进制表示中最右边的1去掉了。

将n赋值为n&(n-1),继续循环此操作,直到n为0。

代码实现:

package oschina.cc150;
/**
 * @project: oschina
 * @filename: IT28.java
 * @version: 0.10
 * @author: JM Han
 * @date: 3:20 PM 1/8/2016
 * @comment: calculate the number of 1 in binary format
 * @result: Your test result
 */

public class IT28 {
   public static int getOneNum(int x){
      int r = 0;
      while(x != 0){
         x = x&(x-1);
         r++;
      }
      return r;
   }

   public static void main(String[] args) {
      int n = 20;
      System.out.println("The 1 in number: " + n + " is: " + getOneNum(n));
   }
}


© 著作权归作者所有

关西大汉弹琵琶
粉丝 8
博文 41
码字总数 14221
作品 0
浦东
程序员
私信 提问
面试精选之位操作问题集锦

Java 中位运算符有与(&)、或(|)、非(~)、异或(^)、左移(<<)、右移(>>)、无符号右移(>>>),只针对 int 类型有效,也可以作用于 byte、short、char、long,当为这四种类型时,J...

JohnnyShieh
2017/12/28
0
0
了解面试算法之 - 栈&队列&位运算

算法,一门既不容易入门,也不容易精通的学问。 对于笔者来说算法算是我程序员生涯很不擅长的技能之一了,自从互联网界招人进入平静期后,越来越多的大厂在社招的时候不但会考验面试者的工作...

群星纪元
03/31
3
0
一道C++面试题和补码、无符号数减法运算

面试题在文章第4节。在看面试题之前,可以先看一下1-3节的知识点。 1. 补码 Two's Complement(二补数、补码)是对的数学运算,运算过程为:对二进制序列每一位取反(0->1; 1->0),再加1。 ...

Aspirinrin
2017/11/24
0
0
程序设计入门-C语言-翁恺-第三周:循环-详细笔记(三)

目录 第三周:循环 3.1 循环 3.2 循环计算 3.3 课后习题 3.4 讨论题(不需要掌握) 第三周:循环 3.1 循环 while循环 语法: while(条件表达式){ //循环体语句 } 如果我们把while翻译作“当”...

简易达
2018/08/14
0
0
LeetCode算法题-Hamming Distance(Java实现)

这是悦乐书的第237次更新,第250篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第104题(顺位题号是461)。两个整数之间的汉明距离是相应位不同的位置数。给定两个整数x和y,...

小川94
01/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

《Java并发编程的艺术》第二章--2.2--synchronized的实现原理与应用

在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但 是,随着Java SE 1.6对synchronized进行了各种优化之后,有些情况下它就并不那么重了 Java中的每一个对象...

我是警察叔叔
14分钟前
4
0
常见排序算法及对应的时间复杂度和空间复杂度

本人免费整理了Java高级资料,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G,需要自己领取。 传送门:https://mp.weixin.qq.com/s/Jzdd...

李红欧巴
17分钟前
2
0
时间和空间的完美统一!阿里云时空数据库正式商业化

经过一段时间公测,得到广大客户的热烈支持,阿里云时空数据库已经于2019年9月10日正式商业化售卖! 产品介绍 时空数据库能够存储、管理包括时间序列以及空间地理位置相关的数据。我们的社会...

阿里云官方博客
21分钟前
3
0
什么是公有云、私有云和混合云云桌面,看完后涨知识了

前不久听到有用户在抱怨说“我就想部署个云桌面而已,怎么还有公有云、私有云和混合云这么个说法的,搞得我都混淆了”,那么到底什么是公有云、私有云和混合云云桌面的呢,他们的优缺点又是怎...

GZASD
24分钟前
4
0
6 个 K8s 日志系统建设中的典型问题,你遇到过几个?

导读:随着 K8s 不断更新迭代,使用 K8s 日志系统建设的开发者,逐渐遇到了各种复杂的问题和挑战。本篇文章中,作者结合自己多年经验,分析 K8s 日志系统建设难点,期待为读者提供有益参考。...

大涛学长
26分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部