对C++中二进制数的1中设置的位进行计数
Count the bits set in 1 for binary number in C++
在一个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),但当对整数执行操作时,它们会执行位移位。
相关文章:
- visual在c++中将十进制数转换为二进制数
- 二进制数之和(使用C样式字符串)
- 以 10 c++ 为基数显示 1024 位二进制数
- 二进制数和位标志'x'
- C++ 二进制数到整数值的数组
- 二进制数组中最大连续 1 的起始和结束索引,以 C++ 为单位
- dev如何在C++中比较二进制数
- 递归回溯打印长度为N的二进制数的所有组合,而不使用循环
- 向后打印二进制数
- 使用位黑客反转二进制数
- 添加两个二进制数(整数数组)
- 从 0 到 n 的二进制数,具有相同数量的字符/
- 我通过迭代加法将二进制数转换为十进制并检查单个字符(请参阅代码)的方法有什么问题?
- 所有测试用例都将小数点转换为二进制数
- 尝试将二进制数组转换为十六进制C++然后打印结果
- 如何缩放二进制数组以保留值
- 计数二进制数中连续1的数量
- 使用堆栈将十进制数转换为二进制数
- C++ 添加二进制数 - 分段错误
- 使用 for 循环更改二进制数>十进制数