아스키코드 정리
오늘은 아스키 코드에 대하여 알아보겠습니다.
아스키코드는 미국 국제 표준 협회(ANSI)에서 1963년 표준화한 정보교환 부호체계입니다.
아스키코드는 7비트로 128(2^7) 개의 부호가 지정되어 있습니다.
1바이트는 8비트인데 7비트만 쓰이는 이유는
나머지 1비트는 패리티 비트라고 오류 검출에 쓰이기 때문입니다.
아래는 아스키코드 표입니다.
대문자 A는 65
소문자 a는 97입니다.
이 둘은 기억해 둡시다.
아스키코드를 활용하면 문자와 숫자 변환이 가능해집니다.
숫자를 이용해 문자 출력이 가능해지며
문자를 이용해 숫자 출력이 가능해집니다.
아래 예시를 보겠습니다.
#include<iostream>
using namespace std;
int main()
{
cout<<(char)65; // A 출력
}
숫자 65를 char형으로 출력하고 있습니다.
이렇게 되면 65에 대응하는 아스키코드가 출력이 됩니다.
반대로도 해보겠습니다.
#include<iostream>
using namespace std;
int main()
{
cout<<(int)'A'; // 65 출력
}
이 경우에는 문자 'A'를 int형으로 출력하니 A에 대응하는 65가 출력이 됩니다.
활용
아스키코드는 문자를 활용한 문제에 활용됩니다.
#include<iostream>
using namespace std;
int main()
{
int a[26]={0,};
string s="abbcccdz";
for(int i=0; i<(int)s.size(); i++)
{
a[s[i]-'a']++;
}
for(int i=0; i<26; i++)
{
cout<<a[i]<<' ';
}
}
이 코드는 문자열 s에 어떤 문자가 몇 번 쓰였는지 알려주는 코드입니다.
여기서 9번 줄이 핵심인데
일단 배열 a의 0번째 인덱스는 a의 개수, 1번째는 b의 개수, 25번째는 z의 개수를 의미합니다.
s[i]-'a'에서 'a'는 65를 의미합니다. 그래서 만약 s[i]값이 'a'(65)라면 s[i]-'a'값은 0이 되어
s[0]++가 됩니다. 즉 a의 개수가 늘어납니다. 이를 이용하여 각 소문자가 얼마나 쓰였는지
체크할 수 있습니다.
위에서는 소문자만 있는 경우였는데
만약 대문자와 소문자가 섞여있다면?
조건을 추가해 주면 됩니다.
문자가 소문자 범위(97~122)에 있다면 -'a'를 해주고
대문자 범위(65~90)에 있다면 -'A'를 해줘서 배열에 넣어 줄 수 있습니다.
아스키코드를 이용한 백준 문제를 알려드리겠습니다.
백준 2744 : 대소문자 바꾸기(브론즈 5)
이상 아스키코드에 대하여 알아보았습니다.
아스키 코드!
'코딩 > 기타 정보글' 카테고리의 다른 글
[C언어/C++,자바,파이썬] 온라인 컴파일러 사이트 추천 (1) | 2024.02.12 |
---|---|
[C언어/C++] 소수점 개수(자리)지정 방법 정리 (1) | 2024.02.12 |
[C++] 1차원, 2차원, 3차원 배열 초기화 정리(fill, fill_n,memset,전역,지역) (0) | 2024.02.12 |
백준 Solved.ac 연동하기 (0) | 2024.02.11 |
[백준/C++] 백준 시간초과 해결법, 원인 정리 (1) | 2024.02.10 |