質問

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
役に立ちましたか?

解決

N&1とM&1の周りにパランセスを置きます。

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

http://ideone.com/f7kyzg

これは!=以前は&: http://www.swansontec.com/sopc.html

他のヒント

あなたはシフトする必要があります m 適切なビットを比較することもできます。

また、平等テストが合格するかどうかに関係なく、それらをシフトする必要があります。 (シフトを内側の外側に移動します } )

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top