gpt4 book ai didi

c++ - 垂直按位计数(同一位置上的总和)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:39 26 4
gpt4 key购买 nike

有没有什么有效的方法可以在多个变量中对同一位置进行 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com