Q题目

整数的二进制表示中1的个数

输入一个整数,求该整数的二进制表达中有多少个1。
例如,输入10,由于其二进制表示为1010,有两个1,因此输出2。

这是一道很基本的考查位运算的面试题。

Answer解法

两种方式:

1.先将整数num转换为二进制后,在遍历
2.直接使用位运算

这道题的目的本就是考察位运算,所以建议采用第二种解法。

第二种算法中注意点:区别 右移>>无符号右移>>>

就该题本身而言,没有什么难度,这次就不做逻辑分析了。

代码如下

public class Test {public static void main(String[] args) {//测试System.out.println("方法一:"+getCountOne(1801));System.out.println("方法一:"+getCountOne(-1801));System.out.println("******************************");System.out.println("方法二:"+getCountOne2(1801));System.out.println("方法二:"+getCountOne2(-1801));}//方法一:进制转换后,for循环public static int getCountOne(int num){//1.转换为二进制String binary=Integer.toBinaryString(num);System.out.println(num+" 转化为二进制:"+binary);int count=0;//计数器for(int i=0;i<binary.length();i++){char x=binary.charAt(i);if(x=='1'){count++;}}return count;}//方法二:位运算public static int getCountOne2(int num){int count=0;while(num!=0) {if((num&1)==1) {count++;}//注意:必须使用无符号位右移(>>>)--区别于:右移(>>),采用右移时,负数会陷入死循环(-1>>-1,结果为-1)num = num>>>1;}return count;}}

运算结果

1801 转化为二进制:11100001001
方法一:5
-1801 转化为二进制:11111111111111111111100011110111
方法一:28
******************************
方法二:5
方法二:28

算法--微软面试:整数的二进制表示中1的个数(Java实现)相关推荐

  1. 整数的二进制表示中 1 的个数

    2019独角兽企业重金招聘Python工程师标准>>> 题目:整数的二进制表示中 1 的个数 要求: 输入一个整数,求该整数的二进制表达中有多少个 1. 例如输入 10,由于其二进制 ...

  2. 输出一个整数的二进制表示中1的个数

    引言 在一个非零整数的二进制表示中,至少有一位是1.如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,若这个1的后面还有数字0,则这些数字0都会变成1,其余所有位不变. 举例如下:二进制数 ...

  3. 100题_22 整数的二进制表示中1的个数

    输入一个整数,求该整数的二进制表达中有多少个1.例如输入10,由于其二进制表示为1010,有两个1,因此输出2. 这个题非常简单,考的是位运算,我们每次向左移1位,判断最后一位是不是1就可以了.不多说 ...

  4. 算法 - 求一个正整数的二进制表示中1的个数(C++)

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! #inc ...

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

    转自http://my.oschina.net/ithaibo/blog/142655 题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 题目引自http://ac.jobdu ...

  6. JAVA实现输入一个整数,输出该数二进制表示中1的个数(《剑指offer》)

    题目: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 这个题目有个比较有意思并且被公认的解法,我就先贴答案吧: public class Solution {public int ...

  7. 《剑指offer》-统计整数二进制表示中1的个数

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 直观思路就是把二进制表示从右往左统计1的个数.直接想到移位操作来迭代处理.坑点在于负数的移位操作会填充1.有人贴出了逻辑移位 ...

  8. 计算数值二进制表达式中1的个数

    --------------------------------------------- -- 时间:2019-03-21 -- 创建人:Ruo_Xiao -- 邮箱:xclsoftware@163 ...

  9. 二进制表示中 1 的个数

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 需要注意的是: 右移运算符是将一个二进制数按指定移动的位数向右移动. 移动过程中,正数最高位补0,负数最高位补1,无符号数最 ...

最新文章

  1. 【硬核技能】舒工自创bind绑定数据方法,类似angular和vue绑定数据原理
  2. STM32系统滴答定时器(systick)应用
  3. Django路由介绍
  4. php stock 资料地址
  5. eclipse failed to load the jni jvm.dll
  6. QT的QMessageAuthenticationCode类的使用
  7. 基于matlab 读取文件夹 保存文件夹
  8. Qt5.2 for Android 配置及部署到手机运行
  9. CodeForces - 1058A. In Search of an Easy Problem
  10. EF 实现自定义数据库字符串
  11. kali linux conky配置文件,7个美丽的Conky配置为您的Linux桌面 | MOS86
  12. P1307 [NOIP2011 普及组] 数字反转(python3实现)
  13. 技术栈是什么_我从找不到实习到拿大厂offer经历了什么?
  14. C#中完美克隆引用类型的对象
  15. Java反射初探 ——“当类也学会照镜子”
  16. 微信小程序登录注册界面
  17. 看某帖有感(敬告我,以及我亲爱的朋友们)
  18. AWS韩小勇为创业者详细解读云服务商如何为他们提供服务
  19. eve单机版mysql_eve单机版中文下载_eve单机版下载-游迅网
  20. 如何把一个长链接缩短成一个短链接?

热门文章

  1. Day02-深度学习原理与使用方法
  2. cass软件yy命令_WIN10系统中的CASS字体问题
  3. 操作系统实验——简易FAT16文件系统的实现
  4. [Windows子系统] Ubuntu18.04安装及换源
  5. 560. 和为K的子数组 974. 和可被 K 整除的子数组 (哈希表)
  6. [TT]-Trustonic acronyms
  7. ATF RT-SVC的介绍
  8. const * 和 * const 的区别
  9. 【安全漏洞】黑客利用IE 0 day漏洞部署VBA恶意软件
  10. error RC2108: expected numerical dialog constant