有没有什么有效的方法可以在多个变量中对同一位置进行 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 个变量。注意双非操作的使用。它是将输出拖到 0 或 1。
#include <iostream>
using namespace std;
int main() {
uint8_t a = 0xF; // 0000 1111
uint8_t b = 0x3C; // 0011 1100
uint8_t c = 0xF0; // 1111 0000
unsigned result[8];
for(int i = 0; i < 8; ++i) {
unsigned mask = 1 << i;
result[i] = !!(a & mask) + !!(b & mask) + !!(c & mask);
}
for(int i = 0; i < 8; ++i)
cout << result[i];
}
关于c++ - 垂直按位计数(同一位置上的总和),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35804222/