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
반응형