[英]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.