191. Number of 1 Bits

本文介绍了一个计算无符号整数中1的位数(即汉明重量)的方法。通过位运算技巧,该算法高效地实现了目标功能。举例说明了如何将十进制数转换为二进制,并计算其1的位数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Write a function that takes an unsigned integer and returns the number of ’1' bits it has (also known as the Hamming weight).

For example, the 32-bit integer ’11' has binary representation 00000000000000000000000000001011, so the function should return 3.

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

Subscribe to see which companies asked this question

 关键是熟练掌握位移运算

class Solution(object):
    def hammingWeight(self, n):
        """
        :type n: int
        :rtype: int
        """
        sum =0
        while n:
            sum+= n&1
            n >>=1
        return sum


### 关于计算机中的位数概念 在计算机科学中,位(bit)是最基本的记忆单位[^1]。每一个位可以表示二进制的一个数字,即0或1。通过组合多个位,能够形成更大的数据单元来存储更复杂的信息。 #### 字节与位的关系 字节(Byte)是由8个位组成的更大单位。这意味着每个字节能表达 \(2^8\) 或者说是 256 种不同的状态。这种结构使得字节成为衡量内存大小以及文件尺寸的标准基础单位之一。 当涉及到数值的表现形式时,整型通常会采用固定长度的一系列比特串来进行编码。例如,在现代处理器架构下常见的有32-bit 和64-bit 整形变量类型分别占用四个或者八个连续的字节空间去保存相应范围内的正负整数值及其运算结果。 对于十进制数,则需转换成其对应的二进制格式并可能应用特定方法处理符号位(-/+),比如补码(two's complement)[^3]. 这样做不仅简化了硬件设计还提高了效率. 以下是展示如何将十进制转化为不同宽度(如n-bits)下的无符号二进制字符串Python函数: ```python def decimal_to_binary(n, num_bits=8): return format(n & ((1 << num_bits) - 1), 'b').zfill(num_bits) print(decimal_to_binary(7)) # Output: "00000111" print(decimal_to_binary(255, 16)) # Output:"0000000011111111" ``` 此代码片段定义了一个名为`decimal_to_binary()` 的功能,它接受两个参数:要转换为二进制形式的十进制数 `n`, 可选参数指定目标二进制串应该具有的总位数 `num_bits`(默认值设为了8). 函数内部利用 Python 内置的方法完成了整个过程,并且提供了几个例子演示效果。 另外值得注意的是浮点数(Floating Point Number),它们遵循IEEE标准并通过专门的技术实现精确度控制的同时保持灵活性;还有新兴的数据类型像FP8也逐渐被引入到某些领域当中用于优化性能表现[^4]. 综上所述,理解位的概念及其计算方式对于我们深入探讨计算机体系结构至关重要。无论是简单的算术操作还是复杂的机器学习模型训练都需要依赖这些底层原理的支持才能得以正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值