본문 바로가기
하드웨어/컴퓨터 구조

고정소수점과 부동소수점에 대해서

by bantomak 2023. 5. 4.

정수를 표현하는 방식

일반적으로 사람들은 10진수를 사용해서 숫자를 표현한다. 물론 다른 방식으로도 숫자를 표현하는 것이 가능하다.

 

  • 16진수(Hexadecimal Number) : 0x7B
  • 10진수(Decimal Number) : 123
  • 8진수(Octal Number) : 173
  • 2진수(Binary Number) : 1111011

모두가 123을 표현하고 있다.

 

 

수의 체계

자연수(Natural Number) == 양수, 양의 정수(Posivie Integer) 자연수란 1, 2, 3과 같이 1부터 시작하여 1씩 커지는 수를 이야기한다. 음수, 음의 정수((Negative Integer)) 음수란 자연수와 0 보다 작은 숫자를 의미

jettstream.tistory.com

 

실수(real number)를 표현하는 방식

2.75는 0.5 + 0.25 이므로 0010.1100로 표현이 가능하다.

1bit씩 표현해서 나타낸 정수부와 소수부

고정소수점(Fixed Point)

실수는 보통 정수부(integer)소수부(decimal)로 나눌 수 있다.

따라서 실수를 표현하는 가장 간단한 방식은 소수부의 자릿수를 미리 정하고, 고정된 자릿수의 소수를 표현하는 것이다.

이를 고정소수점 방식이라고 부른다.

 

32비트 실수를 고정 소수점 방식으로 표현하면 다음과 같다.

 

자릿수가 적으면 문제없이 돌아가지만 자릿수가 늘어나면 이를 표현하기 위해 바이트가 많이 필요하다.

 

하지만 이 방식은 정수부와 소수부의 자릿수가 크지 않으므로, 표현할 수 있는 범위가 매우 적다는 단점이 있다.

고정소수점 방식은 직관적이지만 아주 큰 수나 아주 작은 수를 표현하는데 적합하지 않다.

고정소수점 방식 vs 부동소수점 방식

 

부동소수점(Floating Point)

부동소수점에서 부동은 움직이지 않는다는 뜻의 부동(不動)이 아니라, 오히려 그 반대의 의미로 소수점이 떠다니며 움직인다는 의미의 부동(浮動)이다. IEEE 754 표준 방식으로 숫자를 부동소수점으로 표현하는 방식을 알아보자.

 

 

  • 부호부(Sign) : 숫자의 부호를 나타내며, 양수일 때 0, 음수일 때 1이 된다.
  • 지수부(Exponent) : 지수를 나타낸다.
  • 가수부(Mantissa) : 가수 또는 유효숫자를 나타낸다.

 

부동소수점으로 표현하는 방법

  1. 2진수를 정규화(normalize) 한다.
  2. 처음 1비트에 0은 양수, 1은 음수로 표시한다.
  3. 지수부에 정규화 과정에서 얻어낸 지수에 bias를 더한 값을 이진수로 변환해서 채운다.
  4. 가수부에 소수 부분의 값으로 채웁니다. 남는 자리는 0으로 채운다.

 

 

1e+6 이게 뭔데? 과학적 표기법이란 무엇인가?

1e+6은 무엇을 의미하는가? 간단하다. 이는 1,000,000을 의미한다. 0이 6개인걸 뜻한다. 아래에서 더 자세히 알아보자. Metric Prefixes Online Unit Converter 1E+24 1,000,000,000,000,000,000,000,000 yotta Y online.unitconverte

jettstream.tistory.com

부동소수점 표현방식은 과학적 표기법을 기반으로 하고 있다. 위의 포스팅을 참고하자.

 

정규화(normalize)

정규화란 2진수를 1.xxx * 2n 형태로 나타내는 것이다. 10진수 7.625를 정규화하면 2진수로 변환하면 111.101이다. 그리고 정규화하면

 

1.11101 * 22

 

값 2를 얻습니다. 2에 bias인 127을 더해준다.

즉, 129(2 + 127) 이진수로 표현하면 10000001(128 + 1)을 지수부에 넣어준다.

 

 

가수부 입력

x.11101에 해당하는 11101을 입력하고 남는 자리를 0으로 채워준다.

 

 

함께 읽으면 좋은 글

 

C# 단정밀도(Single Precision), 배정밀도(Double Precision)에 대해서

부동소수점(Floating point) 부동소수점의 표현 방법에 대해서는 IEEE754에서 32bit single-precision과 64bit double-precision 표준을 정하고 있는데 이것이 바로 float와 double의 규격이다. 기본적인 구조는 최상위

jettstream.tistory.com

 

참고 사이트

 

CS50 - 고정 소수점(fixed point)과 부동 소수점(floating point)

최근 사내에서 CS50 스터디를 시작했습니다. 본 포스팅은 CS50의 두번째 주제인 ‘C언어’ 강의를 듣다가 평소 궁금했던 고정 소수점(fixed point)과 부동 소수점(floating point)에 대해 추가적으로 정리

gguguk.github.io

 

숫자를 부동소수점 방식으로 표현하기 - Codetorial

부호, 지수, 가수 IEEE 754 부동소수점 표현에서 숫자는 아래와 같이 부호부, 지수부, 가수부의 세 부분으로 구성됩니다. 각 부분의 역할과 사용하는 비트 수는 아래와 같습니다. 부호부 (Sign) : 1비

codetorial.net

'하드웨어 > 컴퓨터 구조' 카테고리의 다른 글

CPU의 작동  (8) 2023.07.28
프로그램 카운터(Program Counter)  (3) 2023.07.21
릴레이를 이용한 논리연산  (6) 2023.07.11
전기로 덧셈을 표현하는 반가산기, 전가산기  (6) 2023.07.07
폰노이만 구조  (20) 2023.06.27

댓글