【发布时间】:2023-03-27 13:45:01
【问题描述】:
是否有任何有效的方法可以在许多变量中的同一位置上进行 COUNT 计数?计数函数应该用相应位数中的个数之和填充数组。例如我们有以下三个变量(为了简单起见,我使用 8 位变量):
uint8_t a = 0xF; // 0000 1111
uint8_t b = 0x3C; // 0011 1100
uint8_t c = 0xF0; // 1111 0000
int result[8];
// some operations ...
count << result[0] << result[1] << .... // prints 1122 2211
我找到了许多解决方案,可以将整个单个变量的结果相加,但不适用于上述问题。
【问题讨论】:
-
您需要 N 个变量的解决方案还是只需要 3 个?
-
256 个查找表,其中包含要添加到累加器中的 8 0/1 字节数组?
-
我认为 8*N 操作是你能得到的最好的(最多一个 const)..
-
如果按照@MartinJames 的建议使用查找表,则将其减少到
N。无论如何,这里没有神奇的解决方案。 -
“高效”在什么方面?速度、简单性、代码大小……?
标签: c++ c algorithm bit-manipulation