부동소수점 형식 변환

아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

지금은 쓰이지 않는 Gould 부동소수점 형식으로 적은 수를 IEEE 754 단정밀도 형식으로 가능한 한 정확하게 옮기려 한다.

Gould 형식은 32비트다.

부호 비트 1개, 지수부 7비트, 가수부 24비트로 이루어지고, 이 32비트를 16진수 8자리로 적는다. 가수부는 앞의 세 비트까지 0이 될 수 있다. 이 형식이 나타내는 값은 다음과 같다.

value=(1)S×16EXP64×MANTISSA224\text{value} = (-1)^{S} \times 16^{EXP - 64} \times \frac{MANTISSA}{2^{24}}

SS는 부호 비트, EXPEXP는 지수부, MANTISSAMANTISSA는 가수부다. 0은 32비트가 모두 0인 형태로 적는다.

IEEE 754 단정밀도 형식도 32비트다.

부호 비트 1개, 지수부 8비트, 가수 24비트로 이루어진다. 정규화된 수에서 가수의 맨 앞 비트는 항상 1이므로 그 비트는 저장하지 않고, 가수부를 23비트로 적는다.

지수부가 0도 아니고 255도 아니면 정규화된 수이고, 값은 다음과 같다.

value=(1)S×2EXP127×(1+MANTISSA223)\text{value} = (-1)^{S} \times 2^{EXP - 127} \times \left(1 + \frac{MANTISSA}{2^{23}}\right)

지수부가 255이고 가수부가 0이면 양의 무한대 또는 음의 무한대이며, 어느 쪽인지는 부호 비트가 정한다.

지수부가 255이고 가수부가 0이 아니면 수가 아닌 값이고, 이 문제에서는 다루지 않는다.

지수부가 0이고 가수부가 0이면 +0 또는 -0이며, 부호 비트로 구분한다.

지수부가 0이고 가수부가 0이 아니면 비정규 값이고, 값은 다음과 같다.

value=(1)S×2126×MANTISSA223\text{value} = (-1)^{S} \times 2^{-126} \times \frac{MANTISSA}{2^{23}}

Gould 형식으로 적은 수가 주어지면 다음 규칙에 따라 옮긴다.

  • 값이 0이면 +0을 출력한다.
  • 정규화된 IEEE 수로 담기에 너무 크면 양의 무한대 또는 음의 무한대를 출력한다. 부호는 부호 비트를 따른다.
  • 정규화된 IEEE 수로 담기에 너무 작으면, 비정규 값으로 나타낼 수 있을 때는 비정규 식으로 계산한 결과를 출력하고, 나타낼 수 없을 때는 +0 또는 -0을 출력한다. 부호는 부호 비트를 따른다.
  • 나머지 경우에는 정규화된 IEEE 값을 출력한다.

가수를 옮길 때 비트가 모자라면 모자란 아래 자리를 0으로 채우고, 비트가 남으면 남는 아래 비트를 버린다. 반올림은 하지 않는다.

입력

첫 줄에 테스트 케이스의 수 PP가 주어진다. (1P10001 \le P \le 1000)

이어지는 PP개의 줄에는 각각 테스트 케이스의 번호와 Gould 형식으로 적은 수 하나가 공백으로 구분되어 주어진다. 이 수는 숫자 0부터 9까지와 대문자 A부터 F까지로만 이루어진 16진수 8자리다.

출력

각 테스트 케이스마다 테스트 케이스의 번호와 옮긴 IEEE 값을 공백으로 구분해 한 줄에 출력한다. IEEE 값은 대문자 16진수 8자리로 적는다.