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

时间:2013-11-17 18:04:11

标签: c++ bit

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

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

1 个答案:

答案 0 :(得分:2)

闻起来像家庭作业,所以我会模糊和神秘。但是很有帮助,因为这就是我们在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),但是当对整数进行操作时,它们会执行位移。