2017-09-09 9 views
4

나는 숙제를 해야겠다. 이진 부동 소수점을 소수로 변환해야합니다. 나는 그 과정을 이해하고있는 것처럼 느낀다. 그러나 나는 정답을 얻지 않고있다. 여기 내 사고 과정이 있습니다. 이진 부동 소수점을 소수로 변환하는 방법은 무엇입니까?

는 I 이진 부동 있습니다 0 000 101

  • 3 비트 지수 필드에 대한 바이어스는 3 : 가수가 1.101된다 2^(3-1)-1 = 3
  • (기지국 2)
  • 지수 비트의 값 , 0, 지수 비트 수 -3을 뺀 값이 -3이므로 가수의 소수점이 3 자리 왼쪽으로 이동합니다.
    0.001101
  • 10 진수에서는 2^-3 + 2^-4 + 2^-6, 이는 0.203125 또는 13/64와 같습니다.

그러나 13/64는 정답이 아니며, 자동 그레이더는이를 허용하지 않습니다. 내 대답이 틀린 경우, 나는 왜 그런지 이해하지 못합니다. 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랍니다.

순수 운에 의해 나는 5/32를 답으로 생각하고 정확 해졌습니다. 나는 그것이 왜 그런지 전혀 모른다.

+0

어떤 것이 정답이라고 않습니다

또한 비트의 체크 박스이 온라인 계산기를 참조하십시오? –

+0

이 0.001101을 올바르게 보는 또 다른 방법은 1101/2^6 또는 13/64와 같습니다. 그래서 당신의 지수는 틀린가? 옳은 대답을 아는 것은 그것을 밖으로 분류해야합니까? –

+1

순수 운에 의해 나는 5/32를 답으로 추측하고 정확함을 얻었다; 왜 그런지 모르겠다. – Grav

답변

4

IEEE-754 부동 소수점 형식에서 exponent = 0은 비정규이며, 가수의 암시 된 선행 비트는 0입니다.

위키 피 디아에는 많은 예제가 포함 된 single-precision float (binary32) 형식의 좋은 기사가 있습니다. binary32 플로트의 경우, 공식은 (위키 기사에서)입니다

(−1)^signbit × 2^(−126)  × 0.significandbits ; denormal, expbits=0 
(−1)^signbit × 2^(expbits−127) × 1.significandbits ; normal 
Inf or NaN (depending on mantissa aka significant); expbits = all 1s 

(0.0 비정규의 특별한 경우이지만, 실제로는 비정규 고려하지 않는다).

어쨌든 지수가 0 인 경우 지수가 더 이상 expbits - bias이 아니므로 하나만 더 높습니다. 위로 경우에


: 당신의 가수는 0.101 이진, 0.625 진수 (나는 calc0b101/8를 연결)입니다.

2^-2 * 0.101 (이진수) = 2^-2 * 0.625 (10 진수) = 0.15625 = 5/32


(예제) 8 언급 https://en.wikipedia.org/wiki/Minifloat Wikipedia 기사가있어 컴퓨터 그래픽 하드웨어에서 실제 생활에 사용되는 32 비트 미만의 형식과 함께 IEEE-bit 형식을 지원합니다. (예 : 24 비트 또는 16 비트). 재미있는 사실 : x86은 F16C ISA extension을 사용하여 레지스터에서 단일 레지스터로 /에서 변환하여 16 비트 반 정밀도 부동 소수점 벡터를로드/저장 할 수 있습니다. https://www.h-schmidt.net/FloatConverter/IEEE754.html