16位字符串的逐位比较



我有16个不相关的二进制字符串(长度相同)。如。100000001010, 010100010010等等,我需要找出一个位串,其中位置x是1,如果位置x在16个位串中至少有2个位串为1。

最初,I尝试使用按位异或,只要偶数个字符串包含1,这就可以很好地工作,但是当奇数个字符串包含1时,给出的答案是相反的。

A simple example (with 3 strings) would be:
A: 10101010
B: 01010111
C: 11011011
f(A,B,C)= answer
Expected answer: 11011011
Answer I'm getting right now: 11011001

我知道我错了,但我不知道如何进行非常感谢您的帮助

你可以这样做

unsigned once = x[0], twice = 0;
for (int i = 1; i < 16; ++i) {
    twice |= once & x[i];
    once |= x[i];
}

(A AND B) OR (A AND C) OR (B AND C)

相关内容

  • 没有找到相关文章

最新更新