게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
xor swap
게시물ID : programmer_5300짧은주소 복사하기
작성자 : 황금비
추천 : 0
조회수 : 717회
댓글수 : 13개
등록시간 : 2014/09/04 18:36:55
아래 의자 유모가 나와서 제가 처음 c언어 공부할 때 xor를 사용한 swap 입니다.

void Tswap(int* a, int* b)
{
*a ^= *b;
*b ^= *a;
*a ^= *b;
}

^= 연산자가 정수형만 되니까 double이나 float이면 double과 같거나 큰 정 수형을 큰 수를 사용하면 되겠네요. __int64을 사용하고 일반화 시키면

template<class T>
void Tswap(T* a, T* b)
{
*((__int64*)a) ^= *((__int64*)b);
*((__int64*)b) ^= *((__int64*)a);
*((__int64*)a) ^= *((__int64*)b);
}


// 테스트...
int main()
{
double a= 123.456789;
double b= 98765432.1234567;

Tswap(&a, &b);
...

그냥 temp하나 줄여 볼려고 작성한 신기하지 않은 평범한 거니까 그리 큰 의미는 담지 마세요.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호