对C++中二进制数的1中设置的位进行计数

Count the bits set in 1 for binary number in C++

本文关键字:C++ 二进制数 设置      更新时间:2023-10-16

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

我不知道如何开始这个。有什么帮助/提示吗?

闻起来像作业,所以我会含糊其辞。但很有帮助,因为这就是我们在SO.所做的

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

其次,让我们将第二个位移到第一个位置。C++中有一个操作就是为了这个。

第三,冲洗并重复,直到完成。一边数一边数。

EDIT:所以在伪代码中,假设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成为一个无符号变量;否则,右移操作将对您产生影响。

哦,而且<lt;和>>运算符正是按位移位的。在C++中,它们有时在类中被重写以表示其他内容(如I/O),但当对整数执行操作时,它们会执行位移位。