Programmers/TIP

대소문자 바꿔서 출력하기 c++ [LV.0]

Hun-bot 2025. 2. 15. 18:32
728x90
반응형

ASCII 코드에서 대문자와 소문자의 차이

영어 알파벳은 ASCII 코드에서 대소문자가 일정한 차이를 가지고 있다.

문자 ASCII 코드(10진수) ASCII 코드(2진수)
'A' 65 01000001
'a' 97 01100001
'B' 66 01000010
'b' 98 01100010
... ... ...
'Z' 90 01011010
'z' 122 01111010

대소문자의 차이: 6번째 비트(0x20, 32)

소문자의 ASCII 값은 대문자의 ASCII 값보다 항상 >32.
'a' (97) - 'A' (65) = 32
'b' (98) - 'B' (66) = 32

이진수에서는 6번째 비트를 XOR연산을 사용해 반전

XOR 연산 (c ^= 32) 코드

#include <iostream>
#include <string>

using namespace std;
string swap(string s){
    for(char &c :s) c ^=32;
    return s;
}

int main(void) {
    string str;
    cin >> str;
    cout << swap(str);
    return 0;
}
728x90
반응형