比较并识别特定位置的位置和值并打印出来

时间:2016-12-19 11:35:08

标签: c# c bit-manipulation binary-data

我陷入了解决问题的困境,如下所示

假设我有两个变量A = 10010101 [正确位值]& B = 11001010 [错误位值需要与A进行比较]

以上两个变量是8位,我需要比较每个位置的值,从最高位到最后一位。我需要的是打印它们不相同的位置以及该位置的正确/错误值。

示例:对于B,当我们将位置2的位值与A进行比较时,第二个位置位值应为“0”。

我尝试使用XOR操作但在那种情况下我没有在该位置找到正确的值。另外,我想告诉您,位A值是固定的,位B值是从设备动态生成的。

感谢您宝贵的时间。

2 个答案:

答案 0 :(得分:0)

如果我找对你,你的逻辑应该是这样的:

ForEach elem in A 
    C[elem.index] = A XOR B

ForEach elem in C
    if elem == 1 
        print elem.index

答案 1 :(得分:0)

只需比较位,如果它们不同,则打印索引和A中的相应位。

for(i=0 to sizeof(A))
{
    tempA = A & (1 << i); //Get ith bit of A
    tempB = B & (1 << i); //Get ith bit of B
    if(tempA != tempB ) //Check if they are same.
        printf(i, tempA); //If they are different, print position and correct value.
}