말을 제가 어렵게 해서 이해하는데 혼란이 왓는지 모르겟군요..
int main(int argc, char* argv[])
{
char a = 'a';
char b = 'b';
char c;
c = a ^ b;
printf("1: %c \n" , c); //<== XOR에 의해 변형
printf("1: %d \n" , c); //<== XOR에 의해 변형된 값을 숫자로 표시 해보자
c = c ^ b;
printf("2: %c \n" , c); //<== 한번더 b로 XOR하면 원래 a문자 출력
return 0;
}
위 소스를 보시면 알겟지만 8비트가 알아서 XOR연산이 된다는 겁니다.
사실은 char a ='a' 에서 소문자 a 는 97입니다.
그리고 b는 98입니다.
01100001 <-- 97 a문자
01100010 <-- 98 b문자
--------
00000011 <-- 3 ASCII 3번 문자
이렇게 8비트는 알아서 처리된다는 거구요
님의 과제는 문자열을 처리하는 거니까 연산의 해당하는 단일 문자 위 예제에서는 b변수에 해당하는 넘과 문자열을 문자열의 첫번째 문자 부터 끝번째 문자 까지 루프를 돌려가면서 하나하나 ^ (XOR) 연산을 해야 한다는 의미였습니다.
char[] 배열을 이용하셔야 겟구요
저장할 char[]배열이 필요하겟죠..
char 배열의 인덱스를 0부터 증가 시키면서 문자열의 길이보다 1작게 까지
그것과 단일문자와 XOR연산을 시켜서 다른 배열의 저장 하는 루틴을 구현 하면 됩니다.
그럼 ^^
??? 님이 쓰신 글 :
: 모든 문자열을 하나하나 어떻게 루프를 돌리죠 ???
:
: 내부적으로 문자 (char) 는 1바이트 8비트로 각각의 비트들이 XOR연산을 한답니다. <== 이걸 어떻게
:
: 하죠? 번거려우실텐데 죄송합니다.
|