Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[54] Re:이해가 안되서...ㅡㅡ;;
남병철.레조 [lezo] 3229 읽음    2001-11-28 13:00
안녕하세요? 레조입니다.

^^; 어제 글을 올렸다가 지웠는데 다시 올립니다.
가장 핵심적인 부분인 ^= 연산자의 의미입니다.

그럼 하나씩 풀어나가 볼까요? ^^
EXCHANGE 본문에 보시면 _x ^= _y ^= _x ^= _y 이렇게 나와있는데 오른쪽에서
부터 연산되는건 아시겠죠?
_x = 10;
_y = 5;
라는 값이 있다고 생각해 보면...
2진수로 1010(10), 0101(5)로 표현될 수 있죠?
^ 표시는 XOR입니다. 두비트가 같으면 0 다르면 1입니다.
_x = 1010
_y = 0101
--> 1111이되겠네요.(첫번째 연산) 그 결과가 _x에 들어가네요.
그럼 남은 연산은
_x ^= _y ^= _x 입니다.
_x = 1111
_y = 0101

이어서 계속 연산하면...
1111
0101
--> 1010 이네요.
_x = 1111
_y = 1010

_x ^= _y
마지막으로 계속 연산하면.. 두 값이 바뀌어 져있습니다. 아래를 보면..
1111
1010
--> 0101 이고..
_x = 0101
_y = 1010
^^ 재밌네요.. XOR와 비트라는 특수성이 이러한 효과를 나타내게되는것이지요.
예전에는 이런식으로 비트연산하여 많은 비법(?)들이 있었는데..
요즘은 잊혀져가고 있는 실정이지요..

inline은 함수호출 보다는 속도가 빠르기 때문에 inline함수로 만들어 놓았네요.
(물론 루프문이 잔뜩들어있는 inline함수는 고려해 봐야겠지만.. --;)
template은 코드의 일반성을 높이기 위해서 해놓은 것이네요..



동글이 님이 쓰신 글 :
: 아마 아시는 분들은 알고 계시겠지만, 예전 C 컴파일러 쓸 때부터 쓰이던 것입니다.
: 차근차근 따라가 보시면 신기하게도 두 변수가 바뀌지요. ^^
:
: inline template <class _T> void EXCHANGE(_T &_x, _T &_y) { _x ^= _y ^= _x ^= _y; }
:
: 저쪽 옆메뉴에 있던 건데요...
:
: 잘 모르겠어서요....
:
: 책찾아보면 나오겠지만...^^;;
:
: 가르쳐주세요~
:
:

+ -

관련 글 리스트
53 이해가 안되서...ㅡㅡ;; 동글이 2521 2001/11/27
54     Re:이해가 안되서...ㅡㅡ;; 남병철.레조 3229 2001/11/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.