分配给你一个任务,编写一个C函数来计算2x的浮点表示。你意识到完成这个任务的最好方法是直接创建结果的IEEE单精度表示。当x太小时,你的程序将返回0.0。当x太大时,它会返回+∞。填写下列代码的空白部分,以计算出正确的结果。假设函数u2f返回的浮点值与它的无符号参数有相同的位表示。
float fpwr2(int x) { /* Result exponent and fraction*/ unsigned exp, frac; unsigned u; if (x <1) { /* Too small. Return0.0*/ exp = 2; frac=3 ; } else if (x <4) { /* Denormalized result*/ exp =5; frac = 6; } else if (x< 7) { /* Normalized result.*/ exp=8; frac = 9 ; } else { /* Too big. Return +oo*/ exp =10 ; frac = 11 ; } /* Pack exp and frac into 32 bits*/ u = exp << 23 | frac; /* Return as float*/ return n2f(u); }