5

2 つの 2 桁の符号なし整数を比較する新しいプログラムを作成します。ハミング距離で比較します。しかし、私のアルゴリズムは完全には機能しません。このコードの何が問題なのか教えてもらえますか :( どうもありがとうございました!!

これが私の数え方です。

int countHammDist(unsigned int n, unsigned int m)
{
int i=0;
unsigned int count = 0 ;
for(i=0; i<8; i++){
if( n&1 != m&1 ) {
    count++;
    }
n >>= 1;
m >>= 1;

}
return count;
}

a および b 8 ビット バイナリ。

 PrintInBinary(a);
 PrintInBinary(b);

 printf("\n %d", countHammDist(a,b));

出力をお見せしましょう。

Enter two unsigned integers (0-99): 55 64
Your choices are 55 and 64
Number A: 00110111
Number B: 01000000
Hamming distance is ; 5
4

2 に答える 2

8

n&1 と m&1 を括弧で囲みます。

if ((n&1) != (m&1))

http://ideone.com/F7Kyzg

これは、!= が & の前にあるためです: http://www.swansontec.com/sopc.html

于 2013-11-06T23:50:56.363 に答える