2011년 8월 28일 일요일

A와 B가 8bit 숫자일때 A와 B의 값을 바꾸는 함수

블로그 방문자중 다음과 같은 키워드로 검색한 사람이 있어서 서비스겸 답을 올림...(아마 예전에 북미취업 가이드에서 면접 질문 예제를 올릴 것 때문에 검색 hit가 된듯..)

A와 B가 8bit 숫자일때 A와 B의 값을 바꾸는 함수. 단 새로운 변수를 사용하면 안됨

A = A ^ B  (^는 XOR 임)
B = A ^ B
A = A ^ B

팁: A ^ B는 A | B - A & B 임.. (즉, A나 B, 단 A B 둘다 포함인 것은 제외)
검증: 밴다이어 그램을 그려볼 것

댓글 2개:

  1. 음.... 이거 8bit에 한정하진 않지 않나요?
    bit수는 관계없는걸로 아는데....

    게다가, 이게 아마 그냥 temp 변수 만드는 거보다 느려서 안쓰이지 않나요?

    답글삭제
  2. 흔히 면접에서 등장하는 질문일뿐... 실무에선 저도 안써요. 32 bit도 상관없지만 질문을 간단하게 하기 위해 보통 unsigned char라는 가정하에 물어보지요.

    답글삭제