[계산기 구조] 4. 실수 데이터 표현(부동 소수점)

부동소수점 표기
부호 비트, 지수부, 가수부로 나누어 표현

부호비트
최상위 비트는 부호 비트(0:부호 없음, 1:부호 있음-음수)

지수부
0승을 기준 표현(Bias)으로 정하여 지수부의 값을 더해서 표현
예) 64바이어스일 때 2의 6승
바이어스인 64를 이진수로 표현하면 1000000
이진수 1000000를 0승으로 취급
6은 이진수로 110
바이어스에 6을 더하면 1000110

가수부
소수점 이하 자리만 표현
예) 1.101011
소수점 이하 자리인 101011만 표횬

예) 부호비트1, 지수부 8, 가수부 23 자리,  127바이어스로 -12.625를 표현하면
부호비트는 1
12.625 = 8(2의 3승) + 4(2의 2승)+0.5(2의 -1승) + 0.125(2의 -3승)
= 이진수 1100.101 = 이진수 1.100101 X 2의 3승
지수부는 127 바이어스이므로
01111111 이 0승
3승이므로 01111111 + 011 = 100000010
가수부는 1.100101에서 소수점 이하의 표현만 사용하므로
100101 이며 나머지 빈 자리는 0으로 표현
10010100000000000000000
따라서 -12.625를 110000001010010100000000000000000

[그림 1] 32비트 실수의 메모리 구조
부동 소수점 표현과 메모리 예
유효 자리수를 최대로 표현하기 위해 1010.111을 1.010111X2의 3승으로 바꾸어 지수부와 가수부를 분리하는 과정을
정규화라 부릅니다.

덧셈, 뺄셈 과정
0인지 조사 => 가수의 위치 조정(지수가 큰 것을 기준) => 가수를 더하거나 빼기 => 정규화

곱셈 과정
0인지 조사 => 지수부 더하기 => 가수부 곱하기 =>정규화

나눗셈 과정
0인지 조사 => 부호 결정 => 피젯수 조정(제수보다 피젯수가 작게 조정) => 지수부 빼기 => 가수부 나눗셈 => 정규화