unsigned int arg的二进制表示

时间:2013-02-04 05:14:53

标签: c

其无符号整数参数的二进制表示中出现的次数。

例如,数字183是0b10110111,有三次出现11次。

有人可以解释或详述(带有例子)这意味着什么?

2 个答案:

答案 0 :(得分:1)

不确定。从0开始计数。查看每个连续的位对。如果他们是11,增加计数。如果他们不是,请不要。

在您的示例10110111中,连续的对是

10 01 11 10 01 11 11

其中三个是11,所以返回3.

如果您需要实现这一点,最简单的方法可能是查看2个最低有效位,看它们是否为11.如果是,则递增计数器。然后将整数移一位并循环。当你将所有1移出时,循环可以停止,因此数字为0.此时计数器将保持答案。所有这些都可以用3或4行代码完成,你真的应该自己编写。

答案 1 :(得分:0)

它计算在unsigned int中设置多少位(有重叠)。

从技术上讲,对于参数的每个第i位,使用0 <= i <= 30,如果i - 设置了位且(i+1) - 设置了位,那么你有一对。算上所有这些,你就完成了。