[2024. 중등임용 정보ㆍ컴퓨터] 32비트 단일 정밀도 형식

32비트 단일 정밀도 형식

정답

\((1.011)_2\) 의 32비트 단일 정밀도 형식 : 부호 \(0\), 지수 \(0111\ 1111\), 가수 \(011\ 0000\ 0000\ 0000\ 0000\ 000\)

\((10.1)_2\) 의 32비트 단일 정밀도 형식 : 부호 \(0\), 지수 \(1000\ 0000\), 가수 \(010\ 0000\ 0000\ 0000\ 0000\ 000\)

\((1.011)_2\) 와 \((10.1)_2\) 를 2진 부동소수점 곱셈한 결과의 32비트 단일 정밀도 형식 : 부호 \(0\), 지수 \(1000\ 0000\), 가수 \(101\ 1100\ 0000\ 0000\ 0000\ 000\)

출제 의도

IEEE 754 단일 정밀도 부동소수점 수의 구조(부호, 지수, 가수)를 이해하고, 2진수를 정규화하여 이에 맞게 표현하는 방법을 묻는다. 또한 두 부동소수점 수를 2진 부동소수점 곱셈 규칙에 따라 곱한 뒤, 결과를 다시 IEEE 754 단일 정밀도 형식으로 나타내는 과정을 설명할 수 있는지를 평가한다.

풀이 과정

IEEE 754 32비트 단일 정밀도 수는 \((-1)^{\text{부호}} \times 2^{(\text{지수}-127)} \times (1.\text{가수})\) 의 값을 갖는다. 정규화된 2진수에서 가장 앞의 \(1\)은 가수부에 저장하지 않고 생략한다.

먼저 \((1.011)_2\) 를 IEEE 754 형식으로 나타낸다. 이 수는 이미 정규화된 형태이므로

$$ (1.011)_2 = 1.011_2 \times 2^0 $$

이다. 따라서 실제 지수 \(E = 0\) 이고, 지수부에는 \(E+127 = 127\) 을 저장한다.

$$ 127_{10} = 0111\ 1111_2 $$

가수부는 정규화된 수 \(1.011_2\) 에서 맨 앞의 \(1.\)을 생략한 뒤 나머지 비트를 왼쪽부터 채우면 된다. 따라서

가수부 \(= 0110000\ldots\) 이고 23비트가 되도록 뒤를 모두 0으로 채우면

가수 \(011\ 0000\ 0000\ 0000\ 0000\ 000\) 이 된다. 부호는 양수이므로 0이다.

다음으로 \((10.1)_2\) 를 IEEE 754 형식으로 나타낸다. 이 수를 정규화하면

$$ (10.1)_2 = 1.01_2 \times 2^1 $$

이므로 실제 지수 \(E = 1\) 이고, 지수부에는 \(1 + 127 = 128\) 을 저장한다.

$$ 128_{10} = 1000\ 0000_2 $$

가수부는 정규화된 수 \(1.01_2\) 에서 맨 앞의 \(1.\)을 생략한 \(010\ldots\) 을 왼쪽부터 채우면 된다. 따라서

가수 \(010\ 0000\ 0000\ 0000\ 0000\ 000\) 이 되고, 부호는 역시 0이다.

이제 두 수를 2진 부동소수점 곱셈 규칙으로 곱한다. 정규화된 형태로 쓰면

$$ (1.011)_2 = 1.011_2 \times 2^0,\quad (10.1)_2 = 1.01_2 \times 2^1 $$

이므로 곱은

$$ (1.011)_2 \times (10.1)_2 = \left(1.011_2 \times 1.01_2\right) \times 2^{0+1} $$

먼저 가수 부분을 곱한다. 실제 값을 이용해 계산하면

\( 1.011_2 = 1.375_{10},\; 1.01_2 = 1.25_{10} \)

$$ 1.375 \times 1.25 = 1.71875 $$

10진수 \(1.71875\) 를 2진수로 바꾸면

$$ 1.71875_{10} = 1.10111_2 $$

따라서 가수 곱은 \(1.10111_2\) 이고, 전체 곱은

$$ (1.011)_2 \times (10.1)_2 = 1.10111_2 \times 2^1 $$

이다. 이 값은 정규화된 형태 \(1.10111_2 \times 2^1\) 이므로 실제 지수 \(E = 1\), 지수부는

$$ E + 127 = 1 + 127 = 128_{10} = 1000\ 0000_2 $$

가 된다. 가수부는 \(1.10111_2\) 에서 맨 앞의 \(1.\)을 생략한 \(10111\ldots\) 을 23비트까지 채운 것이므로

가수 \(101\ 1100\ 0000\ 0000\ 0000\ 000\) 이 된다. 곱의 부호는 두 수가 모두 양수이므로 0이다.

정리하면, \((1.011)_2\) 와 \((10.1)_2\) 를 2진 부동소수점 곱셈한 결과는

$$ 1.10111_2 \times 2^1 = 3.4375_{10} $$

이고, IEEE 754 32비트 단일 정밀도 형식에서는 부호 \(0\), 지수 \(1000\ 0000\), 가수 \(101\ 1100\ 0000\ 0000\ 0000\ 000\) 으로 표현된다.

<풀이가 부정확할 수 있으니 반드시 교차검증 확인 바랍니다.>