4바이트의 정수형 데이터 1의 비트구조를 비트연산해서 구해보면 다음과 같습니다.
00000000 00000000 00000000 00000001
그리고 이를 4바이트의 실수형 float으로 해석해서 출력하면 그 값은
0.00000000000000000000001(이진수) X 2^(-127)
이 되죠(여기서 ^은 제곱승을 나타내기 위한 기호입니다.). 왜냐하면 맨 앞부터 1비트는 부호부이고, 8비트는 지수부이며, 나머지 23비트는 가수부이기 때문입니다. 부호부는 양수일 때 0이고, 지수부는 메모리상에서는 0이지만 2^(8-1)-1을 빼면 -127이죠. 그리고 가수부는 맨 끝을 1로 놓으면 위와 같은 결과로 해석이 될 겁니다. 그리고 이 값을 공학용 계산기로 계산하니
0.00000000000000000000001 X 5.877471754E-39 1번
입니다.
그러나 C++의 공용체로 1이라는 데이터를 int형 멤버와 float형 멤버로 공유해 저 위의 결과를 float형 멤버로 출력해보면