Contents

조회 수 592 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
book_7220.png


1.4.4 정수형과 실수형 데이터 타입

▣ 정수형 데이터 타입

여러분이 1비트를 가지고 있다면 표현할 수 있는 수가 몇 가지나 될까? 물론 2가지밖에 없다. 1바이트로 표현할 수 있는 수의 개수는 256가지이다. 만약 1바이트로 양수를 표현한다면 0부터 255까지 전체 256개의 수를 표현할 수 있을 것이다. 음수를 포함해서 표현한다면 -128부터 +127까지 전체 256가지로 표현할 수 있을 것이다. 이것은 1바이트로 표현할 수 있는 범위이다. 2바이트로 표현한다면 훨씬 큰 수를 표현할 수 있을 것이다. 그리고 4바이트로 표현한다면 아주 큰 수를 표현할 수 있을 것이다. 큰 수를 표현하기 위해서는 더 많은 바이트가 필요한 것이다.

그렇다면 정수형과 실수형에서 메모리의 크기가 다른 것들이 존재하지 않을까? 물론 존재한다. 정수형부터 먼저 알아보자. 비트의 조합은 같지만 메모리의 크기가 다른 정수형은 다음과 같다.

□ 메모리의 비트의 조합은 같으나 메모리의 크기가 다른 정수형
◇ 바이트(byte) - 1 바이트
◇ 문자(char) - 2 바이트
◇ 정수(int) - 4 바이트
◇ 큰정수(long) - 8 바이트

자바에서 byte형은 1바이트 크기의 정수형이다. byte라는 데이터 타입은 자바에서만 사용하는 데이터 타입이다. C나 C++ 언어에서는 byte라는 데이터 타입이 없다. 자바에 새로운 byte형이 생긴 이유는 자바의 char형이 2바이트이기 때문이다.

char형은 원래 C나 C++ 언어에서는 1바이트로 사용되었다. 그런데 자바로 넘어오면서 char형이 유니코드(Unicode)를 표현하기 위해서 2바이트로 바뀌게 된다. 그로 인해 1바이트짜리 데이터 타입이 없어지자 필요에 의해 1바이트짜리 byte형을 만든 것이다.

자바의 byte 데이터 타입은 디폴트로 부호가 있는 signed이기 때문에 byte의 표현 범위는 -128부터 +127까지이다. 그리고 int는 4바이트, long은 8바이트짜리 정수형 데이터 타입인 것은 쉽게 알 수 있다.

□ byte형
◇ 자바에서만 사용하는 데이터 타입
◇ 1바이트짜리 데이터 타입
◇ 일반적으로 char가 1바이트지만 자바에서는 char형이 유니코드 표현을 위해 2바이트로 바뀌게 된다. 그래서 자바에서 1바이트 데이터 타입을 위해서 새롭게 만든 데이터 타입

☞ 유니코드(Unicode)
컴퓨터는 영어권의 문자를 기반으로 발전해 왔으며, 비 영어권의 나라들에 대한 문자표를 ASCII 문자로 표현할 수 없었다. 그 이유는 ASCII 문자표는 8비트 체계이기 때문에 표현할 수 있는 문자수가 고작해야 256가지밖에 되지 않기 때문이다. 이러한 문제는 각국의 문자표를 재작성하는 단계로 가게 만든다. 그리고 이것은 국제 시장의 데이터의 교환이라는 심각한 문제에 봉착하게 되자 만국 공통 표준 문자표인 유니코드가 등장하게 된 것이다. 즉 문자 체계가 16비트로 바뀌게 된 것이다.


그런데 혹자는 다음과 같은 질문을 할지도 모른다. char가 어떻게 정수입니까? 문자를 표현할 때 다음과 같이 작은따옴표를 붙여서 표현하기 때문에 이와 같은 질문이 나올 수 있다.

□ 문자의 표현
◇ 'a', 'A' 는 숫자이다.

위의 'a'를 프로그래머라면 수(Number)로 보아야 한다. 그 원리는 아주 간단하다. 문자표를 보면 'a'는 하나의 숫자로 표현되어 있다. 즉 문자표를 컴파일러가 보관하고 있고 문자표에서 숫자를 찾아오는 것이다. 기계는 숫자만을 계산할 수 있다. 문자 a는 계산할 수 없다. 그렇기 때문에 문자 자체를 숫자로 변환하는 체계가 필요한 것이다. 여러분이 문자 'a'를 사용하는 것은 문자표에서 숫자를 사용하는 것과 똑같은 효과가 있다.

▣ 실수형 데이터 타입

정수형을 알아보았으니 이번에는 실수형에 대해서 알아보자. 실수형의 비트조합을 가진 데이터 타입은 다음과 같다.

□ 메모리의 비트의 조합은 같으나 메모리의 크기가 다른 실수형
◇ 덜 정밀한 실수형(float) : 4 바이트
◇ 정밀한 실수형(double) : 8 바이트

아주 단순하게 구분할 수 있다. float형은 4바이트의 메모리를 차지하고 있으며, double형은 8바이트의 메모리를 차지하고 있다. 실수형에서 메모리의 크기는 얼마나 정밀한 수를 표현하느냐의 문제이다. 즉 소수 몇째 자리까지 표현할 수 있느냐의 문제가 되는 것이다. 당연히 메모리의 크기가 크면 더 정밀한 수를 표현할 수 있다.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
20 Java 1.6.2 할당의 법칙 IT장인 2013.11.21 379
19 Java 1.6.1 데이터 타입과 변수, 상수 IT장인 2013.11.21 445
18 Java 1.5.3 상수의 의미 IT장인 2013.11.21 571
17 Java 1.5.2 변수의 의미 IT장인 2013.11.21 385
16 Java 1.5.1 데이터 타입의 목적 IT장인 2013.11.21 329
15 Java 1.4.5 그 외 데이터 타입 IT장인 2013.11.21 66408
» Java 1.4.4 정수형과 실수형 데이터 타입 IT장인 2013.11.21 592
13 Java 1.4.3 정수형과 실수형의 계산 IT장인 2013.11.21 526
12 Java 1.4.2 정수형과 실수형 메모리의 형태 IT장인 2013.11.21 1356
11 Java 1.4.1 데이터 타입의 분류 IT장인 2013.11.21 459
10 Java 1.3.3 메모리에 들어가는 데이터 IT장인 2013.11.21 486
9 Java 1.3.2 변수를 이용한 메모리 접근 IT장인 2013.11.21 467
Board Pagination Prev 1 2 3 4 5 6 Next
/ 6