대소문자 변경을 할 때 우리는 XOR연산을 통해 쉽게 할 수 있다.
A^32를 해주게 되면 a가 되고 a^32해주게 되면 A가 된다.
이건 매우 간단하게 설명이 가능한데, a와 A가 아스키 코드 값으로 32만큼 차이가 나기 때문이다.
a 는 아스키 코드 값으로 97 A는 65 이다.
둘 사이 차이는 32로 서로 32를 더하고 빼면 나오는 값이다.
비트로 보기
a = 97을 8비트로 보면 0110,0001 이고 A = 65 [0100,0001] 이다.
이걸 조금 더 보면 알파벳의 갯수는 26개이고, 각각을 비트로 표현하면
A = [0100,0001](65) Z =[0101,101](90)이다.
a = [0110,0001](97) z = [0111,1010](122)이다.
따라서 A^32가 어떤의미인가, 32를 비트로 표현하면 [0010,0000]이다.
따라서 둘을 XOR연산을 해주게 되면 당연하게도 둘 중하나만 있어야 1이므로 각각의 알파벳의 비트가 역전되게 되는 것이다.
Uploaded by N2T
728x90
'알고리즘 기초시절' 카테고리의 다른 글
이코테 구현알고리즘 예제 1번 상하좌우 -방향벡터 (C언어) (2) | 2023.01.08 |
---|---|
백준 왕실의 나이트(C) 수학적 풀이, 완전 탐색적 풀 (0) | 2023.01.08 |
백준 (C언어) (구현) 게임개발 -방향벡터 및 맵 탐색 (0) | 2023.01.08 |
[백준 BOJ 10816번] 숫자 카드 2 (C++ ) (0) | 2023.01.08 |
백준 c++백준 1181번 단어정렬 (부제 :c++의 말도 안되는 편리함) (0) | 2023.01.05 |