深入理解计算机系统家庭作业第二章(2.83-2.90)

来源:互联网 发布:数据分析师 前景 编辑:程序博客网 时间:2024/06/11 02:08

/*****************2.83**********************/

(!sx && sy) || (sx && sy && (ux <= uy)) || (!sx && !sy && (ux >= uy))


/*****************2.84**********************/

A.  E = 2; M = 5/4; f = 1/4; V = 5.0
B.  n位小数全为1。 E = n; M = 2 - 1/(2^n); f = 1 - 1/(2^n); V = 2^n * ( 2 - 1/(2^n) ) = 2^(n + 1) - 1
C.  最小规格化数: E = 2 - 2^(k - 1); M = f = 2^(-n); V = 2^E * M; 倒数为1/V


/***********2.85**************/
2^(-16445)
2^(-16382)
2^16384 - 2^16320


/*************2.86*****************/

为了简单起见,省略表格

Hex                M                     E                  V

0x8000          0                     -62                -

0x3f01        257/256             0              257/256

0x4700           1                      8                  -

0x00ff         255/256              -62             2^-62 * 255/256

0xff00

-                      13/8                  -5               13/256


/*************2.87*****************/

1 01110 001       -9/16       1 0110 0010       -9/16

0 10110 101        208         0 1110 1010        208

1 00111 110        7/1024    1 0000 0111       7/1024

0 00000 101       5/2^17      0 0000 0000        0

1 11011 000       -2^12       1 1111 0000        负无穷

0 11000 100         768        0 1111 0000        正无穷


/*************2.88********************/

A.   当x取MAX_INT时不成立,因为此时x转为float时有精度丢失

B.   当 x+y 发生溢出时不成立

C.   成立,虽然double类型不满足结合律,但该表达式永远不会发生溢出

D.   不成立,乘法可能会导致精度溢出

E.   当x = 0  y不等于0时不成立



/***********2.89*************/

float fpwr2(int x){unsigned exp,frac;unsigned u;if(x < -149){/*Too small. Return 0.0*/exp = 0;frac = 0;}else if(x < -126){/*Denormalized result*/exp = 0;frac = 0x800000 >> (126 - x);}else if(x < 128){/*Normalized result*/exp = x + 127;frac = 0;}else{/*Too big  Return +00*/exp = 0xff;frac = 0;}u = exp << 23 | frac;return u2f(u);}



/**************2.90*****************/

A.   11.0010 0100 0011 1111 0110 11

B.   11.001001001001(001...)

C.   223/71 和 22/7 大概相差1/500,故从小数点后第九位开始不同


0 0
原创粉丝点击