UVA1530 Floating Point Numbers

题目描述

### 题目大意 一个 float 类型的浮点数是由 $16$ 个二进制位构成的。 第一位为符号位,第二至八位为指数,第九至十六位为尾数。 ![](https://pic.imgdb.cn/item/64b4f6f91ddac507cc4ad4b1.jpg) 该数表示十进制的 $-10.375$。 - 若符号位为 $1$,则该数为负数。 - 指数减 $63$ 为实际的指数,其底数为 $2$。(如本例中 $(1000010)_2-63=3$) - 剩下的尾数表示小数点后的二进制位,小数点前则永远是 $1$。 ![](https://pic.imgdb.cn/item/64b4f7f81ddac507cc4e3d76.jpg) - 所以这个数为十进制下的 $-10.375$,而在编程中,则一般写作 $\texttt{-1.0375e+001}$,不同的编程语言会在 $\texttt{e}$ 是否大写和指数位的前导零个数有所区别。 - 特例:若一个数除了符号位外都是 $0$,则这个数就是 $0$。

输入格式

每行 $16$ 个二进制位。

输出格式

一行 $14$ 个字符,表示该 float 类型浮点数的十进制: - 第 $1$ 个字符,空格表示正数,$\texttt{-}$ 表示负数。 - 第 $2\sim 9$ 个字符,为一个精确到小数点后 $6$ 位的浮点数。 - 第 $10$ 个字符为 $\texttt{e}$。 - 第 $11$ 个字符为 $\texttt{+}$ 或 $\texttt{-}$ 表示指数的正负。(若指数为 $0$ 则为 $\texttt{+}$) - 第 $12\sim14$ 个字符为指数,若不足三位则补前导 $0$。 ### 样例输入 ``` 1100001001001100 0011111100000000 1011111110000000 0000000010101010 0011011111100000 1001111011100000 0101011001010101 0100011011101101 0111111111111111 1100001000101100 0000000000000000 1000000000000000 ``` ### 样例输出 ``` -1.037500e+001 1.000000e+000 -1.500000e+000 1.804180e-019 7.324219e-003 -2.182787e-010 1.117389e+007 2.465000e+002 3.682143e+019 -9.375000e+000 0.000000e+000 0.000000e+000 ```