2016-12-19 3 views
0

比較し、特定の位置での位置および値を識別し、プリント

と仮定私は二つの可変A = 10010101 [正しいビット値] & B = 11001010【エラービット以下のように、私は問題の解決に行き詰まって

Aと比較する必要がある値

上記の2つの変数は8ビットです。各位置の値を最上位ビットから最後のビットまで比較する必要があります。私が必要とするのは、それらが同一でない位置と、その位置の正しい/エラー値となるべき位置を印刷することです。

例:Bについては、第二の位置のビット値が「0」でなければならない、我々はA.

ための位置2のビット値と比較した場合、私はXOR演算を使用しようとしたが、その場合、私は見つかりませんでしたその位置の正しい値。また、ビットAの値が固定でビットBの値が動的にデバイスを形成することをお知らせしたいと思います。

あなたの貴重な時間をありがとう。

+0

からインデックスと対応するビットを印刷これが欠けていますコード、それは非常に "私のためにこれを書いてください"という質問です。 – unwind

+0

@unwind sirあなたが論理で私を助けることができるのであれば書いておく必要はありません。適切な論理なしで私自身のコードを書くことができないので。 – Mike

答えて

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. 
} 
+0

私はそれをコード化し、私のフィードバックを与えるでしょう – Mike

+0

XOR Bを行う場合は、 AとBでは異なっています。そして、あなたは[最高ビットセットを検索できます](http://stackoverflow.com/questions/671815/what-is-the-fastest-most-efficient-way-to-find-the-最高セット・ビット-msb-in-an-i)。 – Gerhardh

+0

@Gerhardh:そうです。しかし、私はちょうど疑似コードで論理を説明しようとしていました。また、最高位のビットだけでなく、エラーが発生した場所のすべてのビットを印刷する必要があります。 – MayurK

0

私は右のあなたを取得する場合、あなたのロジックは次のようにする必要があります:

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

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

論理のためにありがとう私はそれをコード化し、私のフィードバックを与えるでしょう – Mike

関連する問題