기타 강좌

3-4.실수형

3-4-가.종류

실수... 잘 이해안가시는 분은 [실수는 소수이다]라는 생각을가지고 읽으시면 더 편리하답니다 ^^

실수(Real Number)란 소수점 이하를 가지는 수이며 정수보다는 한 단계 더 확장된 범위를 포괄한다. 3.14나 57.4같이 정수부 다음에 소수점과 소수 이하의 소수부가 있다. 실수형 타입은 이런 실수를 저장하는 타입이며 C에서는 크기별로 다음 세 가지 종류가 제공된다. 실수 타입은 모두 부호를 가지고 있다.

 

타입

바이트

범위

유효자리수(십진)

float

4

3.4*10-38~3.4*1038

7

double

8

1.7*10-308~1.7*10308

15

long double

10~16

1.2*10-4932~3.4*104932

19

 

float는 4바이트의 작은 실수형이며 double은 8바이트의 큰 실수형이다. 실수형의 값을 기억할 변수가 필요하다면 double d; 형식으로 선언하면 된다. long double형은 C언어 표준에는 있지만 비주얼 C++은 6.0과 7.0 모두 이 타입을 지원하지 않으며 double형과 동일하게 취급한다. gcc는 12바이트 크기의 long double형을 지원한다. 정수와 마찬가지로 실수도 수학에서의 실수와는 달리 무한대의 크기와 정밀도를 제공하지는 않으며 할당된 메모리 크기만큼의 크기와 정밀도만 표현한다.

컴퓨터는 원래 정수만 다룰 수 있기 때문에 실수를 기억하는 방법이 아주 독특하다. 만약 4바이트를 2바이트씩 나누어 정수부와 소수부를 따로 저장한다고 해 보자. 이렇게 단순한 방법을 사용하면 32767.00000 보다 더 큰 수를 표현하지도 못할 뿐더러 소수부도 기껏해야 소수점 이하 다섯 자리도 채 표현하지 못할 것이다. 그래서 실수는 부동 소수점이라는 좀 특이한 방법으로 저장한다. 부동(浮動) 소수점이란 실수를 정수부와 소수부로 나누는 것이 아니라 지수부와 가수부로 나누어 기억하는 방식이다.

가수부는 값의 모양을 표현하며 지수부는 10의 거듭승으로 값의 크기를 표현한다. 실수 123.456을 부동 소수점 형식으로 표현하면 1.23456*102으로 표현할 수 있으며 이를 공학적 표기법으로 바꾸어 1.23456E2로 표현하기도 한다. 이 예에서 가수는 123456이고 지수는 2이다. 정수부와 소수부를 기억하는 방식보다 부동 소수점 방식으로 실수를 기억하면 훨씬 더 큰 수를 표현할 수 있고 정밀도도 높아진다.

제일 왼쪽 비트(MSB)는 항상 부호 비트이며 이 비트가 0이면 양수, 1이면 음수이다. 지수부와 가수부의 크기는 float의 경우 8비트, 23비트이며 double형의 경우 11비트 52비트이다. 그래서 float보다는 double이 두 배의 크기를 가지는 대신 훨씬 더 큰 수를 정확하게 표현할 수 있다.

이런 실수 표현법은 C언어의 고유한 방식이 아니라 IEEE에서 제정한 국제 표준이며 이 표준은 모든 언어가 공통적으로 따르고 있다. 부동 소수점 수의 정확한 구조는 위에서 대충 설명한 것보다 조금 더 복잡한데 필요하다면 별도의 자료를 찾아 보기 바란다. 이 책의 18장에서 실수의 구조에 대해 대략적인 설명을 하고 있다.


List of Articles
분류 제목 글쓴이 날짜 조회 수
Vegas Pro 베가스 강좌 목록 아방스 2017.09.28 886
파이널컷X 파컷 강좌 목록 아방스 2017.06.18 757
기타 [꿈꾸는소년의 스토리강좌]RPG의 형식과 스토리 관계(2):액션RPG 12 file 꿈꾸는소년 2008.03.12 2754
에프터 이펙트 [기초강좌] 애프터 이팩트의 워크플로우과 용어 설명 아방스 2012.09.12 3105
에프터 이펙트 [기초강좌] cs6 애프터 이팩트의 고성능 작업을 위한 PC최적화 아방스 2012.09.12 4338
기타 [강좌][공식]타겟과 포인트와의 거리 계산 2 허걱 2009.02.14 3136
기타 [Windows] 윈도우 무비 메이커 2012 다운로드 링크 file 아방스 2016.11.19 757
기타 [VB6 강좌] 제5강 - 제어문 1 독도2005 2009.02.26 2661
기타 [VB6 강좌] 제4강 - 변수와 데이터형 1 독도2005 2009.02.25 2075
기타 [VB6 강좌] 제3강 - 알고리즘과 순서도 4 독도2005 2009.02.14 2838
기타 [VB6 강좌] 제2강 - 비주얼베이직과 인사하기 1 독도2005 2008.10.26 2515
기타 [VB6 강좌] 제1강 - 프로그래밍 언어에 대한 이해 2 독도2005 2008.10.25 2123
기타 [VB6 강좌] 1~5강 강의평가 2 독도2005 2009.05.05 2256
기타 [RPGXP] 기술 데이터 읽기 실패 해결법 2 file 맵만드는중.. 2014.02.17 1717
기타 [mac/win] 어도비 cc 2014 오프라인 업데이트 파일 다운로드 주소 file 아방스 2015.05.10 481
기타 [libGDX] libGDX 시작하기 3 에돌이 2012.01.21 4042
C언어 [C언어] 함수에 대해 [Dark].Angel 2009.01.14 2101
C언어 [C언어] 주석에 대해 [Dark].Angel 2009.01.14 2151
C언어 [C언어] 이스케이프 시퀸스 [Dark].Angel 2009.01.14 2469
C언어 [C언어] 상수에 대해 1 [Dark].Angel 2009.01.14 2383
C언어 [C언어] 산술연산자, 대입연산자, 증감연산자 란? 2 [Dark].Angel 2009.01.14 3541
C언어 [C언어] 변수에 대해 [Dark].Angel 2009.01.14 2625
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Next
/ 19