0929) 공부 / (펌) 실수를 2진수로 표현 공부2010. 9. 29. 16:49
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
정수부를 m, 실수부를 e로 정의했을 때 실수를 2진수로 표현하는 방식은 다음과 같습니다. (2바이트 = 16비트를 이용한다.)
중요한건 저 공식이 아니라, 저런 공식을 사용하여. 처리한다는 것입니다..
m은 정수부를 표현할만큼의 저장공간을 의미하고 e는 소수부를 표현할만큼의 저장공간을 의미합니다..
그러니까..
개념적으로 이해하고 넘어가실것은, 어떠한 식(위의식)에 따라 실수부를 표현한다는 것입니다.
이젠, 실수부의 특징 몇가지를 살펴보겠습니다..
혹시 여러분중에서 float형으로 변수선언을 했더니 오차가 생겼다! 라는 이상한 경험을 하신적 있으신가요?~
여러분이 지금 사용하는 컴퓨터는 만능이아닙니다.
모든 일을 처리할수있습니다. 하지만, 모든 일을 정확히 처리할순 없습니다.
무슨 소리일까요..? 같이 살펴 보시죠.
저게 .. 몬 지는 아직 공부하지 않아서 잘 모르겠습니다. 하지만,
전체적인 간단한 설명을 하자면 a와 b가 같으면 같습니다를 출력하고 다르면 다릅니다 를 출력하는 프로그램입니다.
하지만, 보시면.... 당당하게 " 같습니다 " 가 출력됬습니다.
분명히, 저정도 근사한 차이가 무슨 문제가 되겠느냐, 하시는 분들도 계시기에 몇가지 붙여보겠습니다.
만약에 변수 b에 연산을 한다면 어떻게 될까요.. 물론, 간단한 연산은 표현조차 안되겠지만,
반복해서 b를 더해준다면... 1000번만 실행해도 눈에 띄는 오차가 되어있을 것입니다.
우리가 쓰는 프로그램은 정말 엄청난 연산으로 이루어진 프로그램도 많답니다..
그렇다면, 저 오차가 어디서 생기는 것일까요..?
맨처음 보셨던 식에서 생기는 것입니다. 맨처음식에 어떤 수를 대입하셔도 0은 만들지 못합니다.
그럼 0을 표현하지 못한다는 얘긴가요?..0.0은 없는것인가요..?
아니죠. 컴퓨터는 정확한수를 표현하는것보단, 정말 미세한 오차로, 전혀 문제가없을 만큼의 근사치를 통해
실수를 표현합니다. 그래서, 오차는 당연하것이죠..
이런것이 , 부동소수점의 오차라고 표현합니다.
부동소수점 방식이랑, 위의식대로 소수점을 처리하는 방식이죠.
오차란 사람이 정한 값과 컴퓨터가 표현할수있는 형식상 오류때문에 어쩔수없이 생길수밖에없습니다.
하지만 얼마나 오차를 작게 만들어서 무리없이 사용하느냐도 중요합니다.
간단하게 , 저번포스트부터 정수와 실수의 표현방식에 대해서 알아보았습니다 .
두개를 같이 쓸까하다가 지루할것같아서 나눠봤습니다.
읽느라 수고하셨구요. 그럼 다음 포스트에서 뵙겠습니다.
[출처] [OnAir_FreeNote_C] 실수의 표현|작성자 Prince
'공부' 카테고리의 다른 글
1011) 마우스 오른클릭 막음 해제 (펌 방지 해제) (0) | 2010.10.11 |
---|---|
1008) C언어로 2 ~ 50까지 소수 구하기 (코드) (0) | 2010.10.08 |
0923) C 보충 (0) | 2010.09.23 |
0920) 컴파일 (0) | 2010.09.20 |
0920) 환경변수 등록 (0) | 2010.09.20 |