N & 1과 M & 1 주위에 파란스테스를 넣으십시오.
if ((n&1) != (m&1))
이것은! = 이전에 & : http://www.swansontec.com/sopc.html
문제
나는 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://www.swansontec.com/sopc.html
다른 팁
이동해야합니다 m
올바른 비트를 비교하기도합니다.
그리고 평등 테스트가 통과되는지 여부에 관계없이 이동해야합니다. (내부 바깥쪽으로 이동을 움직입니다 }
)