diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-09-21 23:55:03 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-09-21 23:55:03 +0800 |
| commit | d4a06eaf3649f6000ceafc105f37f3349364df00 (patch) | |
| tree | a0cf75c8fe1ba3240f4fb44b9a29e5b108626ae3 | |
| parent | 9cc39dd2c1f69b9178c0266414d1d33e9873b2c9 (diff) | |
| download | datalab2026-d4a06eaf3649f6000ceafc105f37f3349364df00.tar.gz datalab2026-d4a06eaf3649f6000ceafc105f37f3349364df00.tar.xz | |
floatScale2
| -rw-r--r-- | bits.c | 20 |
1 files changed, 19 insertions, 1 deletions
@@ -232,7 +232,25 @@ unsigned float_i2f(int x) { * Difficulty: 4 */ unsigned floatScale2(unsigned uf) { - return 2; + unsigned sign; + unsigned exp; + + sign = uf & 0x80000000; + exp = uf & 0x7F800000; + + if (exp == 0x7F800000) { + return uf; + } + + if (exp == 0) { + return sign | ((uf & 0x7FFFFFFF) << 1); + } + + if (exp == 0x7F000000) { + return sign | 0x7F800000; + } + + return uf + 0x00800000; } /* |
