2020년 5월 30일 토요일

비트연산문제 Hamming Distance

서로다른 두 수의 다른 비트가 몇개 있는지 체크하는 함수를 만ㄷ르어라

/*
a = 2 10 
b = 3 11

a^b   a와b가 다르면 1 아니면 0
a&b  a와b가 둘다 1이면 1 아니면 0
a|b    a와b중 둘중 하나라도 1이면 1아니면0

a>>i 오른쪽으로 비트 밀기
a<<i 왼쪽으로 비트 밀기
*/




int xor = x^y
int cnt = 0;
for( int =0;i<32;i++)
{
cnt += (xor>>i) &1  //shift연산해서 1과 같다면 cnt 추가
}

return cnt

댓글 없음:

댓글 쓰기

git rejected error(feat. cherry-pick)

 문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...