16位串的按位比较

时间:2014-05-15 22:28:46

标签: binary bit-manipulation bitwise-operators binary-data

我有16个不相关的二进制字符串(长度相同)。例如。 100000001010,010100010010等等,我需要找出一个位串,其中位置x是1 IF位置x是1,对于16位中的ATLEAST 2位串。

最初,我尝试使用按位XOR,只要偶数个字符串包含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

我知道我错了,但我不知道如何继续 非常感谢

2 个答案:

答案 0 :(得分:2)

您可以执行类似

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

答案 1 :(得分:0)

(A和B)或(A和C)或(B和C)

这比你原来的更复杂。