查找数N二进制中1的个数(JS版 和 Java版)
(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版)的更多相关文章
- 剑指offer编程题Java实现——面试题10二进制中1的个数
题目: 请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数.例如,把9表示成二进制是1001,有2位是1,该函数输出2解法:把整数减一和原来的数做与运算,会把该整数二进制表示中的最低位的1变 ...
- VIPKID:笔试题(数组中和为0的一对数的数量,十进制转二进制中1的个数)
1. 求数组中的和为0 的一对数的数量 注意,需要用到set import java.util.Scanner; public class Main{ public static void main( ...
- Algorithm --> 二进制中1的个数
行文脉络 解法一——除法 解法二——移位 解法三——高效移位 解法四——查表 扩展问题——异或后转化为该问题 对于一个字节(8bit)的变量,求其二进制“1”的个数.例如6(二进制0000 0110) ...
- 统计无符号整数二进制中1的个数(Hamming weight)
1.问题来源 之所以来记录这个问题的解法,是因为在在线编程中经常遇到,比如编程之美和京东的校招笔试以及很多其他公司都累此不疲的出这个考题.看似简单的问题,背后却隐藏着很多精妙的解法.查找网上资料,才知 ...
- 剑指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) // 错误解法 ...
- 1513:二进制中1的个数 @jobdu
题目1513:二进制中1的个数 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:1341 解决:455 题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: ...
- 基于visual Studio2013解决面试题之0410计算二进制中1的个数
题目
- [PHP]算法-二进制中1的个数的PHP实现
二进制中1的个数: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 思路: 1.右移位运算>> 和 与运算& 2.先移位个然后再与1 &运算为1的就是1 ...
随机推荐
- Linux时间相关函数
相关文件: /etc/localtime 本地时间二级制文件 /etc/sysconfig/clock 时区配置文件 /usr/share/zoneinfo 存储各个时区的二进制文件 时间修改方 ...
- 【个人】IIS Express 配置
<!-- 查看URL访问控制列表: netsh http show urlacl 添加URL访问控制: netsh http add urlacl url=http://myhostname:8 ...
- 【转】理解JavaScript之闭包
闭包(closure)是掌握Javascript从人门到深入一个非常重要的门槛,它是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现.下面写下我的学习笔记~ 闭包-无处不 ...
- Oracle内存管理理论篇二
目标 了解oracle内存管理方式 掌握ASMM管理方式 掌握AMM管理方式 监控内存使用 学习一个知识点时,最好先了解其历史.ORACLE近期的版本都对内存管理做了简化,从9i通过PGA_AGGRE ...
- Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQNAME to database unique name. 的解决方法
环境:Oracle 11g r2 win7 问题描述:Environment variable ORACLE_UNQNAME not defined. Please set ORACLE_UNQN ...
- Oracle物理的体系结构
体系结构图的学习: 老余服装店的故事 结构图: SQL查询语句 SGA 共享池shared pool 数据缓存区Buffer cache PGA 进程 SQL更新语句 SGA: 日志缓存区 日志文件 ...
- mysql 连接语句
在 SELECT 语句中,如果 FROM 子句引用了多个表源或视图,可以使用 JOIN 指示指定的联接操作应在指定的表源或视图之间执行. 一.交叉联接:CROSS JOIN 交叉联接将执行一个叉积(迪 ...
- centos crontab 定时任务详解
安装crontab: yum install crontabs 说明: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 ...
- (ACM)C++ STL 训练(第一天)
因为老师说ACM考的是纯C++,所以打算抛弃VS的VC++不用了,针对纯C++的编译器有Intel Compiler(不过要钱),MinGw(个人用的),当然还有微软的VC++ 编译器,IDE你们可以 ...
- I/O空间映射
转自:http://www.cnblogs.com/hydah/archive/2012/04/10/2232117.html 注:部分资料和图片来源于网络,本文在学习过程中对网络资源进行再整理. I ...