`
messi_18
  • 浏览: 98579 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

计算一个无符号整数的二进制表示中1的个数

 
阅读更多
计算一个无符号整数的二进制表示中1的个数,这个问题又被称作Hamming weight
Java中有支持的API:
Integer.bitCount
Long.bitCount
    public static int bitCount(int i) {
        // HD, Figure 5-2
	i = i - ((i >>> 1) & 0x55555555);
	i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);
	i = (i + (i >>> 4)) & 0x0f0f0f0f;
	i = i + (i >>> 8);
	i = i + (i >>> 16);
	return i & 0x3f;
    }


http://stackoverflow.com/questions/1458314/number-of-1s-in-32-bit-number
http://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
http://aggregate.ee.engr.uky.edu/MAGIC/#Population%20Count%20%28Ones%20Count%29
分享到:
评论

相关推荐

    判断32位无符号整数二进制中1的个数

    "判断32位无符号整数二进制中1的个数" 本资源主要介绍了在32位无符号整数二进制中统计1的个数的四种方法。 方法一:逐位比较法 该方法的思路是通过逐位比较来统计1的个数。代码如下: ```c int findone(unsigned ...

    (android demo)算法实现:计算十进制数N的二进制形式中包含数字1的个数

    在Android开发中,我们经常会遇到各种算法挑战,其中之一就是如何计算一个十进制数N的二进制表示中“1”的个数。这个任务看似简单,但其实涉及到计算机科学的基础知识,包括二进制转换、位操作以及算法设计。下面...

    二进制中1的个数1

    当我们谈论一个整数在二进制中的1的个数时,实际上是在寻找它的二进制表示中1的出现次数。这个问题在实际编程中经常遇到,尤其是在算法和数据结构的题目中,比如LeetCode上的这个题目。 给定的描述要求我们实现一个...

    78 – 统计二进制中1的个数

    将一个整数转换为二进制形式,统计二进制数中1的个数,如果是负数,按补码统计1的个数 def oneNumber(n): print(bin(n)) if n < 0: # 在python中,负数与0xFFFFFFFF按位与,实际上按照语法,负数在做与操作...

    经典面试题(1):统计整数中1的个数

    本题“经典面试题(1):统计整数中1的个数”是一个典型的例子,其核心是计算一个无符号32位整数在二进制表示下含有多少个1。这个问题在计算机科学中被称为“位操作”或“计数比特”的问题,涉及到位运算、循环以及...

    位1的个数1

    总的来说,计算无符号整数的汉明重量是一个基础的位操作问题,它涉及到计算机科学中的二进制表示、按位操作以及循环控制。掌握这类问题有助于理解计算机底层的运作机制,对提升编程技能非常有益。

    力扣500题刷题笔记7

    位1的个数中,我们需要编写一个函数来计算输入无符号整数的二进制表示中“1”的数量。例如,输入二进制串`00000000000000000000000000001011`,输出应该是3,因为有3个“1”。这个问题可以通过位运算解决。一个常用...

    计算机组成原理实验运动码表-计算机组成原理.pdf

    10. 无符号整数结果为什么会发生“溢出”?:计算机的机器字长总是有限的,因而机器数的位数有限,所以可以表示的数的个数有限。对于n位二进制数,只能表示2n个不同的数,因此有很多数用n位无法表示。 11. 现代...

    大学《微机原理与接口技术》试卷及答案(二).docx

    2. **二进制数表示范围**:无符号二进制数表示的是非负整数,而有符号的二进制数可以用补码形式表示正负整数。题目列举了不同位数的二进制数表示的数值范围。 3. **基数计算**:基数(Radix)是指一个数制系统中...

    手稿_V1.0115

    3. 使用一个循环,当z不等于全1的32位无符号整数(0xffffffff)时继续循环。在每次循环中,count加1,表示找到一个不同的位。 4. 异或后的z通过与自身和加1的和进行按位或(|)操作,这会将z中最低位为1的位变为0,而...

    手稿_V1.088

    `bit1Count`方法用于计算一个无符号整数中二进制形式的1的个数,而`combinationSum3`是解决该问题的主要方法。 在`bit1Count`方法中,它使用位操作来计算1的个数。这个算法被称为“Brian Kernighan’s Algorithm”...

    计算机组成原理-课程作业-hw1_ans1

    - 同样的二进制数在无符号10进制下表示为 `2398076928`,因为没有考虑它是一个负数的标志。 2. **浮点数表示**: - 根据给定的二进制数,可以转换为单精度浮点数。在IEEE 754标准中,这个数表示为 `-1 × 2^(29-...

    计算机二级c基础知识练习.pdf

    14. 最大整数:无符号整数中,最大的是十六进制4FF,等于十进制511。 15. 浮点表示法:实数内部表示通常由指数和尾数组成。 16. 整数范围:负整数比正整数多一个是因为使用补码表示,负零和正零是不同的。 17. ...

    微机原理习题答案PPT学习教案.pptx

    - 原码直接表示一个数的符号,正数的原码与该数的二进制表示相同,负数的最高位为1,其余位为其绝对值的二进制表示。 - 补码是用于表示有符号整数的一种方式,正数的补码与其原码相同,负数的补码是其原码除符号位...

    编程过程中常见移位操作

    补码是计算机中表示带符号整数的一种方式,通常用于处理负数。对于一个N位的整数X,其补码表示为: - 如果X是非负数,则其补码就是其本身; - 如果X是负数,那么其补码可以通过取反加1的方式得到:`~X + 1` 或 `~(X ...

    手稿_V1.024

    - `numOfbit1`函数:这个私有函数用于计算一个无符号整数的二进制表示中1的个数。它使用位操作`d &= d - 1`来清除最低位的1,从而统计1的数量。 5. **位操作**:在C++中,位操作符如`&`(按位与)、`(左移)等被...

    江苏省二级C计算机基础练习题.pdf

    14. 最大无符号整数:在给出的选项中,十六进制4FF(对应十进制1279)是最大的。 15. 浮点表示法:实数内部表示由指数和尾数两部分构成。 16. 整数表示:负整数比正整数多一个是因为采用了补码表示。 17. 进行...

Global site tag (gtag.js) - Google Analytics