C 이론(7)

Hi Beck·2023년 5월 2일

TIL-Language(C & C++)

목록 보기
13/34

#문자 코드

문자 코드
각 문자를 구분하기 위해 각각 약속된 이진수의 값을 정해놓은 코드다.
문자 정보에는 0~9, A~Z, a~z, 특수 기호 등과 같은 문자와 공백이며, 엔터키도 문자로 취급된다.

이렇게 컴퓨터와 대화를 하기위해 이진수에 문자를 대입한 코드가 문자 코드며, 대표적인 문자 코드는 아스키코드와 유니코드다.

근데 왜 숫자로 문자를 표현하지?
결국은 컴퓨터는 이진수로 알아듣기에 우리가 필요한 문자를 숫자로 바꿔줘야됨.근데 보통 우리가 프로그래밍할때 키보드로 문자를 치면 컴퓨터에 써지긴하지않나? 이걸 코딩할 때 왜 숫자를 넣어서 그걸 문자로 나타낼까 ???

1.아스키코드 (정보교환을 위한 미국 표준 코드)

7비트의 조합으로 이루어져있어 총 128개를 사용한다.(2의7승으로 128가지 경우의수)

우리가 A를 입력했을 때 컴퓨터는 7비트의 이진수로 알아들음(우리가 a를 입력하면 타자를 누르면 전자신호(비트로 변환)가 컴퓨터에 전달이 됨.컴퓨터는 그 전자적 신호를 아스키코드 테이블을 뒤져 프로그래머가 요청하는대로 문자나 숫자로 보여준다.)
A = 1000001 이런식으로

아스키코드에는 숫자도 1부터 127까지 자체적으로 입력할 수 있는데, 한 바이트내에서 1~127을 표현할 수 있다는 뜻임 이렇게 되면 숫자 특수기호 알파벳 등으로 영어로 된 문자는 표현이 다 가능함
근데 맵핑이 안된 전세계 언어가 있어 이런 자음 모음을 입력할 수 있게 확장형으로 유니코드란게 나왔다.

2.유니코드
16비트를 사용하여 세계 모든 언어의 문자와 그 밖의 기호에까지 코드값을 부여한 것이다.
2^16개로 표현할 수 있음(아스키코드보다 많은 코드수의 테이블)

근데 유니코드는 문서프로그램에서 쓰일때 4자리의 수로 쓰이는데 십진수로 표현이 되는게아니라 이것은 자릿수가 너무 많으니깐 4자리 숫자로 다시 부여를 한것

4자리숫자 하나하나가 16비트 중 4자리씩 할당받은 것과 같아
예로 들어 2605면 2를 4자리의 이진수, 6을 표현하는 4자리 ... 등 이렇게 이진수로 바꿔주면 본 이진수 코드가 나옴

-인코딩
= 데이터를 규칙을 통해 다른 방식으로 변환하는 것
-> C언어는 ASCII CODE TABLE을 기준으로 10진 정수(10진법으로 표현한 정수)와 문자를 1:1 매칭 시켜 표현하는 방식을 사용했음.

-디코딩
반대로 문자를 숫자로 나타내는 것처럼 원래의 데이터 형태로 변환하는 것

-HEX
십육진수

외우는법
코딩할 때 일반적으로 숫자와 영문자 데이터를 자주 사용해서 아래는 필수임

십진수 65는 A(아스키코드로)
십진수 97는 a
십진수 48는 0

0은 NULL(값이 없는 상태, 0과 다름)
대문자와 소문자는 32 차이다.

0 ~ 32 문자
33 ~ 47 특수기호(키보드 숫자키)
48 ~ 57 숫자
58 ~ 64 특수기호
65 ~ 90 대문자
91 ~ 96 특수기호
97 ~122 소문자
123 ~ 126 괄호
127 DEL

이 기준을 가지고 다른 수를 추측해보는 것
예로 들어
48이 숫자0이니깐 숫자1은 49임,2는 50이고
65가 대문자A니깐 66은 대문자B가 되는 식
97은 a니깐 98은 b

  • 문자로도 문자를 출력할 수 있다.
    %C == A
    %d == 65
    %c == a
profile
Emotional realizer

0개의 댓글