aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-09-21 23:55:03 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-09-21 23:55:03 +0800
commitd4a06eaf3649f6000ceafc105f37f3349364df00 (patch)
treea0cf75c8fe1ba3240f4fb44b9a29e5b108626ae3
parent9cc39dd2c1f69b9178c0266414d1d33e9873b2c9 (diff)
downloaddatalab2026-d4a06eaf3649f6000ceafc105f37f3349364df00.tar.gz
datalab2026-d4a06eaf3649f6000ceafc105f37f3349364df00.tar.xz
floatScale2
-rw-r--r--bits.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/bits.c b/bits.c
index bf437f0..40355a2 100644
--- a/bits.c
+++ b/bits.c
@@ -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;
}
/*