부동 소수점 방식에서 결합 법칙이 성립하지 않는 데이터를 만들어 봅시다.
부동 소수점에서 결합 법칙은 성립하지 않는다고 합니다. 어떤 경우에 성립을 하지 않을까요? 간단하게 테스트 케이스를 만들어 보도록 하겠습니다. 프로그램 1을 보겠습니다. a가 1.0이고 b가 1.0인데 c는 (2^53)입니다. 그리고 d는 1.0 + (1.0 + 2^53)의 값을 출력하고요. e는 (1.0 + 1.0) + 2^53의 값을 출력해요. 두 값이 같을까요? 결론은 같지 않았습니다. 어떻게 이런 데이터를 만들었을까요? 영어 위키에 있는 문서에 따르면, 64bit짜리 floating point의 경우, fraction 부분이 52 bit라고 해요. 이것을 보고 데이터를 만들었습니다. 뜬금없이 무슨 멍멍이 소리를 하고 있네요. 어떤 의미인지 밑에서 후술하겠습니다. printDoubleBits입니다...
코딩/C
2021. 11. 18. 02:40
최근댓글