본문 바로가기
Computer Science/컴퓨터 구조

[컴퓨터구조] 부동소수점(10진수 2진수)

by 히욤 2021. 6. 25.

숫자로 부동 소수점 표현은 두 부분으로 구성됨

- 가수 (mantissa, fraction) : 부호화된 고정 소숫점 숫자

- 진수 (exponent): 소숫점의 위치를 알려주는 부분

말로 들으면 뭔말인지 모름! 예시를 보자.

예제1) 10진수 +6132.789를 부동 소숫점으로 표현하면 다음과 같음

+6132.789 = (0.6132789) x 10^4

10진수에서는 가수가 소수 첫재짜리를 채우고 있어야하는게 기준임!!

위 예제도 (0.6132789)임을 알수있다

따라서 가수의 특징인 "고정 소숫점"이라는 것은 숫자의 양식을 정해놓은 것임

진수 부분은 가수의 소수점을 "오른쪽 왼쪽으로" "얼마만큼 옮겨야" 하는지를 표현함

위의 예제에서는 가수의 소수점을 오른쪽으로 4번 옮기면 되는데 이는 10을 4번 곱하는거와 같음.

" 왼쪽 오른쪽 " = 진수의 부호

" 얼마만큼 옮김 " = 진수의 절대적 크기

위의 예제에선 부호는 '+(오른쪽)', 진수의 크기는 '4' 인것을 알수있음

그렇다는것은 !!

진수의 부호는 수의 부호를 뜻하는게 아니라, 수가 얼마만큼 커지고 작아질 수 있느냐를 표현함.

진수의 부호가 (-) 라면 소숫점을 왼쪽으로 옮겨야하므로 수가 더 작아지고

진수의 부호가 (+) 라면 소숫점을 오른쪽으로 옮겨야하므로 수가 더 커지겠지?

그렇다면 부동소숫점을 일반화 시키면 다음과 같다.

N진수의 부동소수점

( 가수 ) x ( N ) ^ ( 진수 )

- 이때 가수의 양식은?? 이미 정해져있으니 찾아보면 됨. 10진수는 소숫점 첫째 채우기인것이고.

이젠 이진수의 부동소수점을 알아보자.

이진수도 단지 가수가 소숫점 첫째 짜리를 꼭 채워야하는 것이고 ( 이진수는 0,1밖에 없으니 1을 넣어야겠지?)

2진수니까 N에 2를 넣으면 됨

예제2) 2진수 +1001.11를 8비트(1비트는 부호비트) 가수와 6비트 지수를 이용하여 표현

(1001.11) = (01001110) x 2^(000100)

가수는 (01001110) 인데

(01001110) => 부호비트 (+)

(01001110) => 가수

긍까 표현하자면 +0.1001110 인 것이다!!

진수는 (000100) 인데 이건 10진수로 바꾸면 4임. 소숫점 4칸 옮기라는 뜻

참고로 2진수 소숫점을 10진수로 표현하는 법은 다음과 같다

(2진수) => (10진수)

0.1 => 1/2

0.01 => 1/4 즉 2^(-2)

0.001 => 1/8 즉 2^(-3)

그렇다면 0.111은 ??

0.111 => 1/2 + 1/4 + 1/8 = 7/8

근데 잘 생각해보자.

7/8 = 1 - 1/8 이네??

그렇다면 0.11111111은?

1/2+1/4+1/8+1/16+ ... + 2^(-8)

그러면 위와 같은 원리로

1 - 2^(-8) 로 표현할 수 있다!

그렇다면 0.1111....1111은? ( 1이 26개)

1 - 2^(-26) 이다!