검수요청.png검수요청.png

문자 (프로그래밍)

위키원
sosodam (토론 | 기여)님의 2021년 9월 13일 (월) 15:42 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
이동: 둘러보기, 검색

문자(文字, character)는 프로그래밍 분야에서 컴퓨터와 기계 기반 전기통신 용어로서, 자연어 기록 형태의 알파벳이나 음절 문자와 같은 상징 따위와 일치하는 정보의 단위이다.[1] 흔히 char이라고 쓴다. 문자는 프로그래밍 분야에서 컴퓨터에게 명령을 내릴 수 있도록 도와준다.[2]

등장배경[편집]

문자는 수학에서 등장하였으며 쿠르트 괴델(Kurt Gödel)은 불완전성 정리를 증명하는 과정 중에 알고리즘을 추상화시킨 원시재귀함수(primitive recursive function) 개념을 만들고, 이를 이용하여 증명에 성공했다. 수학적으로 본다면 이것이 최초의 프로그래밍 언어라고 볼 수 있다. 굳이 따지자면 함수형 언어라고 할 수 있다. 그리고 그 후에 컴퓨터의 아버지라 불리는 앨런 튜링(Alan Turing)은 불완전성 정리를 보고 자신의 방식도 될 것 같다고 생각하며 연구를 하는데, 여기서 이 원시 재귀 함수와 동치인 튜링머신을 발표하고 이 튜링머신을 이용하여 불완전성 정리를 다시 한번 증명해 보인다. 이는 어떤 체계를 통해서 이 체계의 모순성을 증명할 방법은 없다는 것과 동치이다. 계산 가능성 이론(Computability Theory)이라는 수학의 분야가 생기면서 기존의 원시재귀함수를 확장한 람다 미적분(Lambda calculus)과 무제한 등록기(Unlimited register machine : URM), 프로그래밍(While-programming), SKI 등등 알고리즘을 표현하기 위한 여러 가지 체계들이 등장한다.[3]

종류[편집]

변환[편집]

  • %d : 10진수로 출력하는 정수형이다.
  • %f : 실수형이다.
  • %e : 지수형이다.
  • %o : 8진수로 출력한다.
  • %x : 16진수로 출력한다.
  • %u : 부호없는 10진수로 출력한다.
  • %g : 실수형으로 자동 출력한다.
  • %p : 포인터의 주소를 출력한다.
  • %c : 하나의 문자로 출력 문자형이다.
  • %s : 문자열을 출력한다.[4]

[편집]

(null)은 아무것도 없음을 값으로 표현한 문자(빈 값)를 표현한 것이다. 프로그램(함수 등)이 자료 검색 후 해당 값을 못 찾았을 때, 메모리 할당 실패 때 등의 경우에 넘겨주는 반환 값을 말한다. 널 문자는, 공백 문자 ""(empty) 또는 " "(space, 아스키 32)와는 다르게 취급한다. '=='와 같은 비교 연산 때, 널을 공백 ""(empty)과 같은 것으로 간주하기도 한다.[5]

특수[편집]

다음은 프로그래밍에서 쓰이는 특수문자이다.

  • ' : 그레이브
  • ~ : 물결표시
  • ! : 느낌표 표시
  • @ : 골뱅이
  • # : 샵, 우물정
  • $ : 달러
  • % : 퍼센트
  • ^ : 캐럿
  • & : 엠퍼센드
  • * : 별표
  • - : 마이너스
  • _ : 밑줄
  • = : 이꼬르
  • " : 큰 따옴표
  • ' : 작은 따옴표
  •  : : 콜론
  •  ; : 세미콜론
  • . : 점, 마침표
  • ? : 물음표
  • / : 슬래쉬
  • \ : 백슬래쉬
  • () : 소괄호
  • {} : 중괄호
  • [] : 대괄호
  • <> : 꺽쇠 괄호[6]

집합[편집]

비주얼 스튜디오(Visual Studio)에서는 프로젝트 속성 메뉴에 문자 집합이란 항목이 있다. 옵션은 크게 세 가지 설정 안 함(Not Set), 멀티바이트 문자 집합 사용(Use Multi-Byte Character Set), 유니코드 문자 집합 사용(Use Unicode Character Set)가 있다. 컴퓨터에서는 데이터를 처리하기 위해 2진법을 쓴다. 즉 컴퓨터에서는 숫자를 처리할 수는 있지만, 문자는 기본적으로 처리가 불가능해서 문자를 처리하기 위해 문자 집합(Character Set)이라는 것을 사용한다. 이 중에서 대표 코드는 아스키 코드이고 아스키코드는 이름 그대로 미국 표준 문자 집합이기 때문에 해당 문자 집합에는 전 세계 언어를 표현하기 위한 약속이 되어 있지 않다. 그리하여 만들어진 문자 집합이 바로 유니코드(UNICODE)이다. 유니코드는 전 세계 모든 문자를 컴퓨터에서 일관되게 표현하고 처리하기 위한 국제 표준이다.

  • 아스키코드 : 문자 하나를 표현하기 위해 메모리 1byte를 필요로 한다.
  • 유니코드 : 문자 하나를 표현하기 위해 최소 2byte를 필요로 한다. 이러한 문자 집합들은 크게 3가지로 나눈다.[7]
  • 싱글바이트 캐릭터 집합(SBCS : Single Byte Character Set) : 문자 하나를 표현하는 데 있어 1바이트를 사용하는 방식이고, 대표적인 문자 집합은 아스키코드다.[7]
  • 멀티바이트 캐릭터 집합(MBCS : Multi Byte Character Set) : 문자 하나를 표현하는 데 있어 다양한 바이트 수를 사용하는 방식이고, 대표적인 문자 집합은 유니코드이다.[7]
  • 측면 바이트 캐릭터 집합(WBCS : Wide Byte Character Set) : 문자 하나를 표현하는 데 있어 2바이트를 사용하는 방식이고, 아스키코드와 유니코드를 혼용하여 사용할 수 있는 방식이다.[7]

코드[편집]

퓨니코드[편집]

퓨니코드는 애플리케이션 다국어 도메인 이름(IDNA: Internationalized Domain Names in Application)의 기반하에 다국어 도메인이 아스키로 변환(encoding)된 구문이다. 국제 인터넷 표준 RFC 3492에 정의되어 있다. 다국어 문자셋으로부터 온 코드들을 기본적인 문자열(영숫자, 하이픈)들로 유일하게 표현한 것이다. 애플리케이션 다국어 도메인 이름은 다국어 도메인을 처리하기 위한 작동 원리에 의해 인터넷 사용자가 입력한 다국어 도메인 질의를 클라이언트단에서 아스키 기반의 퓨니코드 형태로 변환(xn--로 시작하는 문자열로 변환)하여 네임서버에 전송하며, 네임서버는 퓨니코드 형태의 영역 데이터를 운영한다.[8]

정보 교환용 ISO 표준 부호[편집]

정보 교환용 ISO 표준 부호(ISO standard code for information interchange)는 국제표준화기구(ISO)가 ISO 646에 의해 국제 표준으로 규정한 '정보 교환을 위한 7비트 문자 집합(Seven-Bit Character Set for Information Interchange)'으로, 정보 처리 시스템이나 데이터 통신 관련 기기 상호 간의 정보 교환에 사용되는 부호이다. 보통 ISO 부호라고 한다. ISO 부호는 7비트의 부호화된 문자(패리티 비트를 포함하면 8비트)로 구성되는 표준 문자 집합으로 하위 4비트 b4, b3, b2, b1을 행 방향으로, 상위 3비트 b7, b6, b5를 열 방향으로 배열하고, 128개의 문자나 기호에 대응하도록 배치되어 있다.[9]

문자 구분 함수[편집]

어떤 문자인지 구분하는 함수가 많이 쓰이고 있다. 단, 같은 종류일 경우 0이 아닌 값을 같은 종류의 문자가 아닐 경우 0을 반환한다.[10]

  • int isalpha(int c) : 주어진 문자가 알파벳인지 검사한다.(A-Z, a-z)
  • int isalnum(int c) : 주어진 문자가 알파벳 또는 숫자인지 검사한다.(A-Z, a-z. 0-9)
  • int isdigit(int c) : 주어진 문자가 숫자인지 검사한다.(0-9)
  • int isxdigit(int c) : 주어진 문자가 16 진수인지를 검사한다.(0-9, a-f, A-F)
  • int iscntrl(int c) : 제어(control) 문자인지를 검사한다.
  • int isspace(int c) : FF('\f'), NL('\n'), CR('\r'), HT('\t'), VT('\v'), 공백문자(' ')등을 검사한다.
  • int ispunct(int c) : 알파벳 문자 혹은 공백 문자가 아닌 출력 가능한 문자인지 확인한다.
  • int isgraph(int c) : 공백 문자를 제외한 출력 가능 문자인지 검사한다.
  • int isprint(int c) : 공백 문자를 포함한 출력 가능한 문자인지 검사한다.
  • int islower(int c) : 소문자인지 검사한다. a-z
  • int isupper(int c) : 대문자인지 검사한다. A-Z
  • int tolower(int c) : 입력된 문자를 대문자로 변경한다.
  • int toupper(int c) : 입력된 문자를 소문자로 변경한다.

각주[편집]

  1. 문자 (컴퓨팅)〉, 《위키백과》
  2. 프로그래밍 언어〉, 《네이버 지식백과》
  3. 프로그래밍 언어〉, 《나무위키》
  4. 블로그(8109), 〈C 언어 변환문자 의미 자료형 (%d,%f,%e,%o,%x,%u,%g,%p,%c,%s)〉, 《티스토리》, 2008-05-21
  5. null, NULL, Null 널 문자〉, 《정보통신기술용어해설》
  6. inyong_pang, 〈(Programming) 특수 문자 용어 정리〉, 《벨로그》, 2020-08-03
  7. 7.0 7.1 7.2 7.3 jrich, 〈Visual Studio 문자 집합 정리〉, 《티스토리》, 2015-03-04
  8. 퓨니코드〉, 《네이버 지식백과》
  9. 정보 교환용 ISO 표준 부호〉, 《네이버 지식백과》
  10. 공간사랑, 〈문자의 종류를 알아내는 C 언어 함수들〉, 《업넷》, 2011-03-09

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 문자 (프로그래밍) 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.