-1

안녕하세요 하나가 유효한 부동 소수점 숫자를 가진 끝낼 수 있었다 비트 32 비트 문자열을 재 해석 할 때 :부호없는 int 범위 [uint (a1) uint (a2)]의 비트 문자열을 부동 소수점 범위 [float (a1) float (a2)]에 재 해석하는 것이 가능합니까?

UINT : 1101004800, 플로트 : 20.000000

지금 내가 정적 분석 도구로 일하고 있어요 말 단일 값 대신 값의 범위에 대한 연산을 정의합니다.

내가 생각하고있는 그러한 연산 중 하나는 부호없는 값의 32 비트 비트 스트링 값을 부동 소수점으로 재 해석하는 것입니다.

float [float (a1) float (a2)]로 변환 할 때 부호없는 정수 [uint (a1) uint (a2)]의 범위는 여전히 연속 범위입니까?

float에는 NaN, 무한대의 특수 값이 있다는 것을 알고 있습니다. 그러나 그렇지 않으면이 범위 전환이 유지됩니까? 나는 비트 시퀀스는, 부동 소수점 숫자가 비교 정수로 해석 할 때 제대로에도 분류 할 수 있습니다 "고 here을 읽은

int: 1101004800, float: 20.000000 
int: 1101004801, float: 20.000002 
int: 1101004802, float: 20.000004 
int: 1101004803, float: 20.000006 
int: 1101004804, float: 20.000008 
int: 1101004805, float: 20.000010 
int: 1101004806, float: 20.000011 
int: 1101004807, float: 20.000013 
int: 1101004808, float: 20.000015 
int: 1101004809, float: 20.000017 

:

다음 숫자는 경우가 건의 할 것입니다. "

답변

1

최대 fmax 표현까지 작동 할 수 있지만 더 이상 표현할 수 없습니다 (부동 소수점 표시 종류가 있기 때문에 음수로 순서가 바뀝니다).

0000 0000 -> 0.0 
... 
7F7F FFFF -> fmax 
7F80 0000 -> +Inf 
7F80 0001 - 7FFF FFFF -> NaN 
8000 0000 -> -0.0 
... 
FF7F FFFF -> -fmax 
FF80 0000 -> -Inf 
FF80 0001 - FFFF FFFF -> NaN 

하지만 의도는 무엇입니까? 정수에서 수행 할 수없는 범위에서 수행 할 작업은 무엇입니까?