2012-04-17 2 views
2

컴퓨터 아키텍처에 대한 CS 숙제에서 나는이 흥미로운 문제를 해결했습니다. 교수님께서는 단 정밀도와 배정도 숫자를 찾고 싶으므로 그 중 하나에 1을 더하면 숫자가 전혀 변경되지 않습니다. 왜 이것이 의미가 있으며,이 숫자를 찾는 데 어떻게 갈 수 있습니까 ??MIPS에서 부동 소수점 숫자에 1을 더하면 숫자가 변경되지 않습니까?

감사합니다.

+0

어떤 부동 소수점 형식입니까? 부동 소수점 숫자가 메모리에 어떻게 표시되는지 그리고 각 부분의 의미를 알아야합니다. 그런 번호를 찾는 것은 간단합니다. –

+1

[모든 컴퓨터 과학자가 부동 소수점 연산에 대해 알아야 할 내용] (http://download.oracle.com/docs/cd/E19957-01/806-3568/ncg_goldberg.html)을 읽어보십시오. – jwodder

답변

1

부동 소수점 숫자에는 제한된 정밀도 (추적 할 수있는 유효 자릿수)가 있습니다. 단 정밀도 float의 경우 약 7 자리이며 배정도는 약 16 자리입니다.

부동 소수점 숫자의 범위는 3 x 10^38을 초과 할 수 있으므로 모든 숫자가 중요하지는 않습니다.

+0

단 정밀도의 경우 1 Sign 비트, 8 Exponent 비트, 22 Fraction 비트가 있습니다. 그러나 그 번호를 찾기 위해 어떻게 사용할 수 있습니까? – roboguy12

+0

@ roboguy12 : 나는 당신이 반드시 그 정도의 수준에 관심을 가질 필요는 없다고 생각합니다. 수십억의 숫자를 3 자리 숫자로 처리하고 1 ~ 234,000,000을 추가 할 때 어떤 일이 일어나는지 생각해보십시오. 3 자리 유효 숫자 만 있으면 어떻게됩니까? –

+0

오 그 말이 맞아! 고맙습니다. 지금은 작동합니다 – roboguy12

0

부동 소수점 연산은 2 진법 (기본 2) 시스템을 기반으로합니다. 여기서 많은 답은 십진법 (기본 10) 문맥의 정확성과 가치에 대해 말할 것입니다. 이것은 (예를 들어) 이상한 모양의 값을 취하는 다른 부동 소수점 형식의 최소값과 최대 값을 가져옵니다.

단 정밀도 가수의 24 개 (묵시적 +23 개의 명시 적) 비트는 24 진수의 정밀도로 변환됩니다. 가장 높은 비트가 설정되는 가장 낮은 24 비트 숫자는 2^23이며 800000의 16 진수 또는 8388608의 10 진수 (7 개의 유효 십진수)로 변환됩니다. 가장 높은 비트가 설정되는 가장 높은 숫자는 2^24-1이며 16 진수 ffffff 또는 16777215 (8 개의 유효 10 진수)로 변환됩니다. 이제는 "7-8 자릿수 정밀도"가 어디에서 비롯되었는지 알 수 있습니다. 개인적으로 나는 바이너리 설명이 일들을 명확하게 설명한다고 생각하지만 십진수는 종종 더 많은 질문을 초래한다.

이 포럼을 탐색하면 특정 값에 대해 "7-8 자리 정밀도"문이 true가 아닌 것을 보여주는 게시물을 찾을 수 있습니다. 배경 지식이 전적으로 10 진수 기반이라면 무엇이 당신을 놀라게할지 궁금 할 것입니다.

지수가 0 (바이어스 제거됨)이면 암시 적 비트 (설정)와 명시 적 비트가 지워지고 값은 1.00000000000000000000000 * 2^0 또는 소수점 1.0이됩니다. 지수가 1이면 값은 1.00000000000000000000000 * 2^1 또는 10 진수 2.0이됩니다.

가수의 최하위 비트를 설정한다는 것은 1.0 * 2 지수에 2^(지수 -23)과 같은 값을 더하는 것을 의미합니다. -23은 가수의 최하위 비트가 암시적인 비트의 오른쪽에 23 위치이며, 2^지수가되도록 정의 된 암시 적 비트보다 작은 두 개의 23의 제곱이라는 사실에서 비롯됩니다.

이렇게하면 원래의 문제를 어떻게 해결할 수 있었는지 알 수 있습니다.