2010년 10월 3일 일요일

03. Data Representation

너무너무 재밌고 신기한 ASCII 코드


우리 함께 모두 everybody 다같이 ASCII코드에 알아보기 전에 기본적인 개념을 짚고 넘어가 보아요~


데이터표현이란?
 
숫자나 문자, 특수 기호를 사용하여 값과 묘사하는 데이터를 표현하는 것. 디지털 컴퓨터에서 모든 프로그램 명령과 데이터는 정해진 형태, 즉 이진 표기법이나 이진화 십진 표기법(BCD) 등으로 정리된 전기적인 신호로 기록된다.

라고 나와있네요^^

잠깐!!!!!!!!!!!!!!!!!!!!!!!! BCD가 뭘까요?
  
소수점을 쉽게 표기하기 위한 방법이에요 즉 Binary coded dicimal로서 2진법을 10진법
  처럼 간편하게 표기하여 한눈에 알아보기도 쉽고 소수점도 쉽게 표현할 수 있어요!
§BCD 는 각각의 10진수의 한자리(0~9) 당 4bit를 사용하여 나타내요!
 
 예를 들어볼게요.
 먼저 1.7의 경우 일의 자리수의 수인 1을 4bit를 써서 나타내면 0001 이죠
                         그 아래 소숫점은 7이네요 7 역시 4bit로 표현하면 0111이네요
 
따라서 1.7을 BCD수로 바꾸면~
                                     1.7 = 0001 . 0111
 
한가지 예를 더들어볼게요^^
                                     4.9 = 0100 . 1001
 
이때 소수점의 자리가 어디인지는 미리 임의적으로 정하는 것으로 걱정할 필요 없어요~
 
Decimal
BCD Digit
0
0000
1
0001
2
0010
3
0011
4
0100
5
0101
6
0110
7
0111
8
1000
9
1001


거의 4bit 를 base로 많이 사용하니까 요렇죠 ^^

BCD는 컴퓨터보다는 전자시계와 같은 혼자서 작동하는 디지털 회로에서 많이 사용되요
쉽고 편리하니까요 ^^^^^^^^^*
지나가다가 전자시계를 보면 저건 BCD 코드를 사용하겠구나 하시면되겠네요



이제 ~ 데이터를 표현하는 방법중 많은 문자를 2진법(혹은 숫자)으로 표현할 수 있는 아스키코드에 대해 알아볼까용^?^  컴퓨터도 문자를 인식하고 싶데요~
 

ASCII [ American Standard Code for Information Interchange ]

미국의 정보 교환용 표준 코드(부호)를 가리킨다. 7비트에 패러티 체크(데이터를 전송할 때 기계 내에서 자동적으로 시행하는 체크)용 1비트를 더한 8비트로 구성된 코드화 문자를 사용한다. 코드화된 문자에는 제어 문자와 도형 문자(알파벳, 숫자 등)가 있다.


우리는 컴퓨터 교육과니까 간단한 코딩 한 번 해볼까요 *.*?

ASCII코드를 출력해볼 수 있는 간단한 C코드에요
 
#include<stdio.h>
int main(void)
{
         int i;
          printf("ASCII (ISO646\n\n");
          for(i=0x00; i< 0x7f;i++){
                   if((i%16)==0){
                   printf("\n");
                        }
          printf("%3d: %c|",i,i);
         }
}
 
간단하죠? 한번 돌려보아요 ㅋ_ㅋ!

Build And Run ~~~~~~~~~~~~~~~~~~~~
 


위에건 간단한 거였고 좀더 알아보면 다음과 같아요
 
아스키 코드 테이블

 
우왕 너무 많아 ㅠㅠㅠ



잠깐!!!!!!!! 궁금한거 있지 않으세요? 
 
난 궁금했는데ㅋㅋ


ASCII 와 extended ASCII의 차이점말이에요.
 
기존의 ASCII code는 1Byte 중에 7bit를 이용해서 10진수 0에서 127까지 128개의 문자를 구성한 코드에요!!(2의 7승은 128.. 컴퓨터는 2진수를 사용하기 때문에 7bit 를 사용하면 128개의 경우를 만들 수 있다는건 아시죠??)
이 128개의 문자는 영어 알파벳과 대문자, 소문자, 보조문자, 제어문자를 포함하고 있는데 더 많은 문자의 필요성을 느껴 IBM에서 후에 나머지 한bit를 추가시켜 8bit로 문자를 확장시켰는데요, 이 코드가 Extended ASCII 입니다. 정식 명칭은 IBM Extended ASCII Code 이고요. 8bit로 문자를 표현했으니 이제 256개의 문자가 생성되겠지요? 이곳에는 비영어 문자와 그래픽 문자가 포함되어 있어요.

지금 흔히 ASCII Code라고 말하는 것은 Extended ASCII Code 라네요^^
 
참고로 요즘에는 2Byte를 이용해서 한글과 한자, 일본어까지 아우르는 유니코드도 사용중이지요.
 

그런데 헷갈리는 개념이 하나 더 있지요? 

ANSI와 ASCII!! 무슨 차이가 있을까요?

컴퓨터가 처음 생겼을 때는 american national standard institute 라는 미국 표준국에서 문자
맵핑을 주로 재정했죠. IBM이 미국 회사니 당연히 컴퓨터 문자의 맵핑도 영어 위주였지요.
그래서 처음 표준을 제정할때 사실 7비트를 썼지요.
128개의 숫자로 영어 알파벳,특수문자,숫자,콘트롤 문자를 모두 나타낼 수 있었읍니다.
그리고 8비트를 쓰면 256가지를 나타낼 수 있었지요. 당연히 영어만 쓴다면 문제가 없지요.
그러나 일본말,한국말,중국말 같은 문자를 나타내는 문제가 생겼어요. 그래서 2바이트로
나타내면 6만개 가까이 나타낼 수 있으므로 이러한 방식을 사용하는  맵핑을 이용하게 되었지요.  완성형이니 조합형이니 하는 것이 그런 종류라고 볼 수 있곘네요.

이후에 유니코드라는 국제 표준 문자 체계를 만들어 기존의 중구난방인 맵핑 방법을 하나로 통일하게 되었는데 그것이 현재의 상태입니다.
 
ASCII는 American Standard Code for Information Interchange의 약자로 1963년에 처음
제정된 영문 맵핑 방법입니다.

후에 ANSI X3.4-1968, ANSI X3.4-1977, ANSI X3.4-1986와 같이 ANSI에서 표준을 재정하게 되었지요.

한마디로 ANSI는 조직! ASCII는 문자 표준 규격! 을 나타낸다고 보면돼요*_*

그리고 ANSI에서 만든 아스키에 대한 규격을 ANSI ~~~ 하고 나타내는 것이죠.

이제 의문이 다 풀렸나요? 
 
사전적 정의를 알아보자면 ^^!

ANSI [ American National Standards Institute ]
미국 내에서 기술표준 개발을 육성하기 위해 설립된 제1차 기관. ANSI는 산업계에 소속된 기술자 그룹들과 함께 일하며, 세계표준화기구인 ISO(International Organization for Standardization) 및 세계전자기술 위원회인 IEC(Internation Electro-technical Commission)의 일원이다. ANSI가 제정한 컴퓨터에 관한 표준 중 대표적인 것으로는 아스키가 있다.
 

라네요~

 
마지막 헷갈리는 개념 따~~~~악 한가지만 더 알아볼까요!?


유니코드와 아스키코드란??
 
ASCII코드는 0~127까지지만 유니코드는 훨씬 표현 범위가 넓답니다.
여러 나라의 언어들이 포함되어있구요.
그런데 유니코드는 아스키코드 이후에 만들어져서 아스키코드를 기반으로 하고 있답니다.
유니코드가 6만번이상 있더라도 아스키코드의 0~127의 코드와 유니코드의 0~127는 같답니다.
 
하지만 아직도 잘 모르겠죠!?
 

유니코드란?

UCS: Universal Code System  아후아후 영어 ㅠㅠ 패스패스 넘어가구

유니코드란 컴퓨터에서 세계 각국의 언어를 통일된 방법으로 표현할 수 있게 제안된 국제적인 문자 코드 규약이에요~~~~~~~~~~~~~~~~

데이터의 교환을 원활하게 하기 위하여 문자 1개에 부여되는 값을 16비트로 통일하였는데요, 코드의 1문자당 영어는 7비트, 비영어는 8비트, 한글이나 일본어는 16비트의 값을 지니는데, 이를 모두 16비트로 통일했네요. ISO/IEC 10646-1의 문자판에는 전세계에서 사용하고 있는 26개 언어의 문자와 특수기호에 대해 일일이 코드값을 부여하고 있어요.  당연히 ASCII코드보다 훨~~씬 많은 문자가 표현될 수 있을거에요. 최대로 수용할 수 있는 문자수는 6만 5,536자라고 하네요. 이 가운데 3만 8,885자는 주요 국가의 언어를 구현하는 용도로 이미 할당되어 있고 6400자는 사용자 정의 영역으로, 나머지는 2만여 자는 새로 추가될 언어 영역으로 각각 비워두고 있어요. 코드 할당비율을 보면 한자가 39.89%로 가장 많고, 한글 17.04%, 아스키 및 기호문자 10.39% 등의 순이에요.
 
미국의 애플 컴퓨터 회사, IBM사, 마이크로소프트사 등이 제안하여, 이를 추진하기 위하여 설립된 유니코드(Unicode)사가 1990년에 발표한 유니코드 버전을 ISO/IEC JTC 1에서 1995년 9월에 국제 표준으로 제정했다고 하네요.



이렇게 오늘은 ASCII 코드와 그와 관련된 몇가지 개념에 대해서 알아보았어요^^

어느정도 궁금증이 풀리셨나요?

만약 아직도 궁금한게있다면

우리들의 마스터 채정민교수님께 질문드려보아요 ^^!! 이야호

그럼 안녕 담에봐용 ♥.♥


- 출처 : 네이버 백과사전
 

댓글 1개: