查找数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 ...
随机推荐
- ADO.NET笔记——存储二进制大对象(BLOB)
相关知识 上传二进制大对象(Binary Large Object)(如图片.视频等)的基本编程步骤是: 在数据库中使用varbinary(MAX).varchar(MAX)或者nvarchar(MA ...
- Mongodb地理空间索引
1.索引: 建立索引既耗时也费力,还需要消耗很多资源.使用{"bakckground":true}选项可以使这个过程在后台完成,同时正常处理请求.如果不包括background 这 ...
- js定时器 特定时间执行某段程序的例子
定时器想必大家并不陌生吧,在本文为大家详细介绍下js中是如何实现定时器的,具体原理及代码如下. 例子: $(function(){ var handler = function(){ //www.jb ...
- WordPress 主题开发 - (三) 开发工具 待翻译
Before we get started building any WordPress Theme, we’re going to need to get our development tools ...
- C#中窗体的互相访问
1.在父窗体中构造子窗体对象时,将父窗体传递过去: 如:FrmSub frm=new FrmSub(this);//this代表父窗体 2.将父窗体中要访问的变量和方法修改为public 3.在子窗体 ...
- python初试牛刀
需求:在L7的一台机器上做nginx配置,然后代码分发到别的所有的机器上.由于目录中有很多配置文件,而且防止误操作,需要修改配置之前先备份原配置.然后需要在运行修改配置的脚本之前,先弹出界面,告知操作 ...
- Jquery LigerUI框架学习(一)
ligerUI框架是一个很丰富的后台框架模板,具有简洁大方的后台样式框架,还有很多灵活的控件,方便开发人员使用: 把昨天学习的成功拿出来供大家学习学习: 首先我们要去ligerUI官网下载Jquery ...
- 存储映射IO
mmap 将文件映射到内存, 对这块内存的修改会自动同步到相应的文件中 void *mmap(void *addr, size_t len, int prot, int flag, int fd, o ...
- 查看表空间信息SQL集合
1.查看表空间的名称及大小 SELECT t.tablespace_name as "表空间名", )), ) AS "所占物理空间M" FROM dba_ta ...
- js中typeof可以准确判断哪些变量类型
typeof 运算符返回一个用来表示表达式的数据类型的字符串. 可能的字符串有:"number"."string"."boolean".& ...