(function(){
function getOne(n) {
var c = 0;
for(var i = 0;i < 32;i ++){
if(((1 << i) & n) != 0){
c++;
}
}
return c;
}
console.log(getOne(10));
console.log(getOne(-10));
})(); //比较最低位是否为1,复杂度O(logn),仅适合正数,当是负数,将出现死循环
function getOne(n){
var c = 0;
while(n){
if(n&1){
c ++;
}
n >>= 1;
}
return c;
} //同上,适合所有的数
function getOne(n){
var c = 0;
while(n != 0){
if((n & 1) != 0){
c++;
}
n >>>= 1;
}
return c;
} function getOne(n) {
var c = 0;
for (var i = 1; i; i <<= 1) {
if (i & n) {
c++;
}
}
return c;
} //int类型的是32位的数字,故只需要统计这32位上的数字的1的个数
function getOne(n) {
var c = 0;
for(var i = 0;i < 32;i ++){
if(((1 << i) & n) != 0){
c++;
}
}
return c;
} //快速去掉最低位1
function getOne(n){
var c = 0;
while(n){
n = n &(n - 1);
c++;
}
return c;
}
public class BinaryOneCount {

    public static void main(String[] args) {
new BinaryOneCount().start();
} private void start() {
int n = -10;
countOne(n); countOne(n = 10);
countOne(n = 103);
countOne(n = 30); } private void countOne(int n) {
System.out.println(Integer.toBinaryString(n));
System.out.println(Integer.bitCount(n));
countBinaryOneBit(n);
countBinaryOneBit1(n);
countBinaryOneBit2(n);
} /**
* 查看当前最低位是否为1,是加1,否则就将当前数字无符号左移1位,进行下一轮判断
* @param n
*/
private void countBinaryOneBit(int n) {
int c = 0;
while (n != 0) {
if ((n & 1) != 0) {
c++;
}
n >>>= 1;
}
System.out.println(c);
} /**
* 每次循环将最低位1去掉,这样进行的次数就是1的个数
* @param n
*/
private void countBinaryOneBit1(int n) {
int c = 0;
while (n != 0) {
n &= (n - 1);
c++;
}
System.out.println(c);
} /**
* 由于是32位的Int类型的数字,故只需要统计这32位上的数字1的个数
* @param n
*/
private void countBinaryOneBit2(int n){
int c = 0;
for(int i = 0;i < 32;i ++){
if((n&(1<<i)) != 0){
c ++;
}
}
System.out.println(c);
}
}

查找数N二进制中1的个数(JS版 和 Java版)的更多相关文章

  1. 剑指offer编程题Java实现——面试题10二进制中1的个数

    题目: 请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数.例如,把9表示成二进制是1001,有2位是1,该函数输出2解法:把整数减一和原来的数做与运算,会把该整数二进制表示中的最低位的1变 ...

  2. VIPKID:笔试题(数组中和为0的一对数的数量,十进制转二进制中1的个数)

    1. 求数组中的和为0 的一对数的数量 注意,需要用到set import java.util.Scanner; public class Main{ public static void main( ...

  3. Algorithm --> 二进制中1的个数

    行文脉络 解法一——除法 解法二——移位 解法三——高效移位 解法四——查表 扩展问题——异或后转化为该问题 对于一个字节(8bit)的变量,求其二进制“1”的个数.例如6(二进制0000 0110) ...

  4. 统计无符号整数二进制中1的个数(Hamming weight)

    1.问题来源 之所以来记录这个问题的解法,是因为在在线编程中经常遇到,比如编程之美和京东的校招笔试以及很多其他公司都累此不疲的出这个考题.看似简单的问题,背后却隐藏着很多精妙的解法.查找网上资料,才知 ...

  5. 剑指Offer面试题:9.二进制中1的个数

    一.题目:二进制中1的个数 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.例如把9表示成二进制是1001,有2位是1.因此如果输入9,该函数输出2. 二.可能引起死循环的解法 一个 ...

  6. 剑指Offer:二进制中1的个数

    题目:输入一个整数,输出该数二进制表示中1的个数. // 二进制中1的个数 #include <stdio.h> int wrong_count_1_bits(int n) // 错误解法 ...

  7. 1513:二进制中1的个数 @jobdu

    题目1513:二进制中1的个数 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1341 解决:455 题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: ...

  8. 基于visual Studio2013解决面试题之0410计算二进制中1的个数

     题目

  9. [PHP]算法-二进制中1的个数的PHP实现

    二进制中1的个数: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路: 1.右移位运算>> 和 与运算& 2.先移位个然后再与1 &运算为1的就是1 ...

随机推荐

  1. background-clip 背景图片做适当的裁剪

    background-clip 用来将背景图片做适当的裁剪以适应实际需要. 语法: background-clip : border-box | padding-box | content-box | ...

  2. mongodb的常用操作

    对于nosql之前工作中有用到bekerlydb,最近开始了解mongodb,先简单写下mongodb的一些常用操作,当是个总结: 1.mongodb使用数据库(database)和集合(collec ...

  3. linux系统版本查看命令

    发布:theboy   来源:net   [大 中 小] 查看linux系统版本的命令 有如下命令可供参考: # lsb_release -a LSB Version:    :core-3.1-ia ...

  4. python time模块和datetime模块详解

    一.time模块 time模块中时间表现的格式主要有三种: a.timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量 b.struct_time时间元组,共 ...

  5. ASP.NET 运行机制

    原本今天打算继续写ASP.NET MVC第四天的.但是由于里面涉及到asp.net运行机制的原理,如果不分析一下这里,mvc想说清楚还是挺困难的.既然要提到asp.net运行机制,所以打算还是说详细一 ...

  6. MYSQL远程登录权限设置

    Mysql默认关闭远程登录权限,如下操作允许用户在任意地点登录: 1. 进入mysql,GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY ...

  7. aspnet_regiis.exe 的用法

    使用aspnet_regiis.exe注册.NET Framework 重新安装IIS以后,需要用aspnet_regiis.exe来注册.NET Framework, 如下: C:\WINDOWS\ ...

  8. 搭建Asp.Net MVC4

    启动vs2012,开始创建一个新的web应用程序.使用菜单:“文件”>“新建项目” 请在左侧选择 Visual C#,然后选择ASP.NET MVC 4 Web 应用程序.命名您的工程为&quo ...

  9. python 基于小顶堆实现随机抽样

    起因:之前用蓄水池抽样,算法精简,但直观性很差. 所以这次采用了简单的,为没一个行,赋值一个随机值,然后取 最大的K个作为,随机样本. 基本思路:为每一个行(record,记录,实体) 赋一个rand ...

  10. codeforces GYM 100114 J. Computer Network 无相图缩点+树的直径

    题目链接: http://codeforces.com/gym/100114 Description The computer network of “Plunder & Flee Inc.” ...