OPEN between Secret

끄적끄적 본문

T.N.V/c & java & 변수

끄적끄적

해가꿈꾸는달 2017. 11. 20. 15:14
반응형

Char : 0~65535, 2byte  java는 유니코드 체계

C언어에서는 1byte ascii코드 체계


컴퓨터는 미국에서 처음 개발되었기 때문에 그 구조가 영어로 되어있음.

초기 ASCII코드는 알파벳 대소문자 + 특수문자 를 합해도 7bit(127)로 충분했으나

컴퓨터가 더 대중화 되면서 7bit으로는 문자 표현이 어려서 1bit를 늘린 256(8비트)로 된 확장 아스키코드

가 나오고 0~127까진 이미사용중이고 그 뒤인128~256 사이에 나머지 나라별로 문자를 넣어서 각 사용.


ANSI(미국 표준 협회- 미국 내에서 기술 표준을 개발하는 기구)

ASCII 문자를 7비트로 표현

0000000 ~ 1111111 로 총 128개 표현 가능(영어 대소문자 구분)

확장(extended) ASCII

00000000~11111111 로 총 256개 표현 가능 8비트로 표현

ascii 에서 앞에 0을 붙임.



ASCII

컴퓨터 초창기 영어만 사용

ASCI(미국 표준 협회)

7비트로 128개면 문자 표현이 가능

0~127 사용

Extended ASCII

유럽권에서 알파벳 외의 추가적인 글자들의 표현이 필요함

ASCII 1비트 더 붙여서 8비트로 사용

128~256의의 빈 공간을 사용.한글도 이 공간 사용



그러다 표준화의 필요성을 느끼어 16비트의 문자부호 체계(unicode)만듬.

그래서 초기 프로그래밍 언어인 c언어에서는 문자는 ascii코드를 쓰기 때문에 char(8bit)이지만

java 에서는 유니코드를 사용하기 때문에 char16bit 이다.


유니코드의 각 문자는 식별 가능한 code point갖음.

Ex) 0번째 문자는 0번째 code Point갖음.

유니코드 표시 형식 U+AC00  U는 이 문자열이 유니코드, 라는 표시 + 뒤에 값은 유니코드의 Code Point

유니코드를 아스키 코드로 표현하기 위한 문자열로 Unicode Escape Sequence라는 문자열이 있음.

형식은 \uAC00


유니코드 : 각 나라별 언어를 모두 표현하기 위해 나온 코드 체계

운영체제, 프로그램, 언어에 관계없이 문자마다 고유한 코드 값을 제공.

모든 문자를 16비트(2byte)로 표현 최대 65536자를 표현

0000000000000000 ~ 1111111111111111

유니코드 표준은 애플,HP,IBM,,오라클 같은 업계에서 사용

xml,자바, ECMAScript. LDAP, CORBA등의 표준에서 사용




UTF-8?

같은 유니코드라도 컴퓨터에 어떻게 저장하느냐에 따라 여러가지 방식으로 나뉘는데 이걸 인코딩 또는 캐릭터셋이라함

UTF-8 이랑 UTF-16등 다양한 인코딩 방식이 존재

1994HTML4 표준이 이후로 UTF-8을 표준 인코딩 방식으로 권장.


변수가 각각 나뉘어져 있는 이유?

C 언어에서 변수 사용시 주의할 점

프로그래밍에서 변수를 표현하기 위한 최소크기는 byte


컴퓨터에서 데이터 처리를 위해서는 데이터를 먼저 저장해야함

저장이라는건 메모리 공간을 할당하고 그 공간에 데이터를 넣는 것임

메모리에 공간 할당시 자료형의 타입에 따라 크기가 결정된다.(즉 메모리의 효율적인 관리를 위해)


연산에 필요한 데이터를 보존하기 위해 필요한 메모리 공간을 용도에 맞게 사용함으로써

불필요한 메모리 공간의 낭비를 줄임

1. 생명주기 : 언제 생성되고 언세 소멸하는지여부

2. 자료형(데이터 유형) : 어떠한 형태로 컴퓨터에 선언할지 여부

   정수로 저장할지 실수로 저장할지 문자로 저장할지 판단

3. 데이터의 크기(메모리 공간): 메모리를 얼마의 크기로 만들지의 판단


유니코드의 0번 플레인(U+0000부터 U+FFFF 코드포인트)까지는 1char 타입(2바이트)으로 표현하고

나머지 1~16번 플레인(U+10000부터 U+10FFFF 코드포인트)2개의 char 타입을 묶어(4바이트) 1개 문자로 표현한다.

예를 들어 U+20000 코드포인트는 2개의 char를 묶음으로 하여 \uD840\uDC00와 같이 UTF-16 인코딩으로 저장한다.

이와 같이 1개 유니코드 문자가 항상 1개의 char 타입으로 대응되지 않는다는 사실을 인지하고 있어야 한다.

char 타입의 배열인 String 문자열 타입의 크기(length())가 유니코드 문자의 개수와 일치하지 않는 이유이다

반응형

'T.N.V > c & java & 변수' 카테고리의 다른 글

JVM 메모리 구조  (0) 2017.11.23
데이터 타입  (0) 2017.11.22
C언어 & Java  (0) 2017.11.17