문제

나는 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