繁体   English   中英

计算在C ++中为二进制数设置为1的位

[英]Count the bits set in 1 for binary number in C++

在一个二进制数15位的数字1中设置了多少位。

我不知道如何开始这个。 任何帮助/提示?

闻起来像家庭作业,所以我会模糊和神秘。 但是很有帮助,因为这就是我们在SO所做的。

首先,让我们弄清楚如何检查第一位。 提示:您希望将变量的所有其他位设置为零,并检查结果的值。 由于所有其他位都为零,因此变量的值将是第一位(零或一)的值。 更多提示:要将位设置为零,请使用AND操作。

其次,让我们将第二位移到第一位。 C ++中有一个用于此的操作。

第三,冲洗并重复直至完成。 在你这样做的时候算一下。

编辑:所以在伪代码中,假设x是源变量

CountOfOnes=0
while X != 0
    Y = the first bit of X          (Y becomes either 0 or 1)
    CountOfOnes = CountOfOnes + Y
    X = X right shift 1             

特别是对于C ++实现,您需要使X成为无符号变量; 否则,右移操作将对您起作用。

哦,<<和>>运算符完全按位移位。 在C ++中,它们有时在类中被覆盖以表示其他东西(如I / O),但是当对整数进行操作时,它们会执行位移。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM