二进制中1的个数(Java实现)
问题: 输入一个整数,求其二进制中1的个数
看到这个问题,我们应该想到数的位运算:
解法一:我们每次将此数&1 ,如果结果等于1,证明此数的最后一位是1,,count++; 然后在将数右移一位,
循环下去,直到此数==0,即可统计出其中1的个数
Test1:
private static int getNum1(int i) {
int count=0;
while (i!=0){
if((i&1)==1){
count++;
}
i= i>>1;
}
return count;
缺点:这种情况只能适用于正整数,当为负数时,负数循环右移时是用1来填前面空缺的位置,所以永远都不会等于0,陷入死循环
解法二:我们的分析就是:把一个整数减去1。再和原整数做与运算,会把该整数最右边的一个1变成0.那么一个整数的二进制表示中有多少个1,就能够进行多少次运算。
基于这种思路。我们能够写出这种代码:
Test2:
private static int getNum1(int i) {
int count=0;
while (i!=0){
i=i&(i-1);
count++;
}
return count;
}
这样操作,无论数是正还是负都可以完美求出1的个数
解法三:我们调用Integer的方法,将i的二进制转为字符串,再依次遍历其中1的个数,也可以完美解决。
Test3:
private static int getNum1(int i) {
int count=0;
String str=Integer.toBinaryString(i);
for (int j = 0; j <str.length() ; j++) {
if(str.charAt(j)=='1'){
count++;
}
}
return count;
}
二进制中1的个数(Java实现)的更多相关文章
- 11.二进制中1的个数 Java
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路 当n不等于0时执行以下循环: 1.判断n的最低位是否为1,若为1,则计数器加1 2.将n无符号右移1位(若使用带符号移 ...
- 《剑指offer》面试题10 二进制中1的个数 Java版
书中方法一:对于每一位,用1求与,如果为1表明该位为1.一共要进行32次,int4字节32位. public int check(int a){ int result = 0; int judge = ...
- 剑指offer编程题Java实现——面试题10二进制中1的个数
题目: 请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数.例如,把9表示成二进制是1001,有2位是1,该函数输出2解法:把整数减一和原来的数做与运算,会把该整数二进制表示中的最低位的1变 ...
- 【Java】 剑指offer(14) 二进制中1的个数
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如把 ...
- Java之一个整数的二进制中1的个数
这是今年某公司的面试题: 一般思路是:把整数n转换成二进制字符数组,然后一个一个数: private static int helper1(int i) { char[] chs = Integer. ...
- 1513:二进制中1的个数 @jobdu
题目1513:二进制中1的个数 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1341 解决:455 题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: ...
- php实现求二进制中1的个数(右移、&、int32位)(n = n & (n - 1);)
php实现求二进制中1的个数(右移.&.int32位)(n = n & (n - 1);) 一.总结 1.PHP中的位运算符和java和c++一样 2.位移运算符看箭头方向,箭头向左就 ...
- VIPKID:笔试题(数组中和为0的一对数的数量,十进制转二进制中1的个数)
1. 求数组中的和为0 的一对数的数量 注意,需要用到set import java.util.Scanner; public class Main{ public static void main( ...
- 剑指Offer面试题:9.二进制中1的个数
一.题目:二进制中1的个数 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2. 二.可能引起死循环的解法 一个 ...
- 剑指Offer:二进制中1的个数
题目:输入一个整数,输出该数二进制表示中1的个数. // 二进制中1的个数 #include <stdio.h> int wrong_count_1_bits(int n) // 错误解法 ...
随机推荐
- RK3288编译 Android 5.1 固件
1 准备工作 编译 Android 对机器的配置要求较高: 64 位 CPU 16GB 物理内存+交换内存 30GB 空闲的磁盘空间用于构建,源码树另外占用大约 25GB Ubuntu 14.04 操 ...
- 从 Server Timing Header 看服务器是如何处理请求的
原文作者:Florian Hämmerle 译者:UC 国际研发 Jothy 写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端.服务端.算法.测试.数据.前端等相关的 ...
- weex初始化启动webpack.common.conf.js中的...报语法错误
使用Babel转码 // 最新转码规则 $ npm install --save-dev-g babel-preset-env // react转码规则 $ npm install --save-de ...
- Java中基本类型的包装类
基本类型包装类: 项目中我们常常放弃基本类型,用基本类型的包装类 基本类型包装类有哪些: Int--Integer char--Character double--Double 以Intger为例讲述 ...
- leetcode-162周赛-1255-得分最高的单词集合
题目描述: 方法:穷举暴力 class Solution: def maxScoreWords(self, words: List[str], letters: List[str], score: L ...
- NX二次开发-Block UI C++界面Face Collector(面收集器)控件的获取(持续补充 )
Face Collector(面收集器)控件的获取 NX9+VS2012 #include <uf.h> #include <uf_obj.h> UF_initialize() ...
- java做题笔记
java做题笔记 1. 初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序 ...
- Python中练习题关于内置函数的getattr,setattr问题
执行一下代码的结果是? class A: def __init__(self,a,b,c): self.x = a+b+c a = A(1,2,3) b = getattr(a,'x') setatt ...
- 【前端控件】JQuery datepicker 日期控件设置
datepicker控件可通过参数设置进行语言切换,以下可实现,系统所有日期控件默认为中文,在特定页面或者特定条件下可切换成英语!~ HTML: <!DOCTYPE html> <h ...
- java xmltojson jsontoxml
JSONObject.fromObject需要的有额外的6个包,必不可少,一定要注意: commons-beanutils-1.9.2.jar commons-collections-3.2 ...