深入理解计算机系统家庭作业第二章(2.83-2.90)
2014-07-24 20:34
323 查看
/*****************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,故从小数点后第九位开始不同
(!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,故从小数点后第九位开始不同
相关文章推荐
- 深入理解计算机系统第二章家庭作业
- 深入理解计算机系统第二章家庭作业(2.91-2.96)
- 深入理解计算机系统第二章家庭作业答案(2.58-2.67)
- 深入理解计算机系统第二章家庭作业(2.68-2.82)
- 深入理解计算机系统_3e 第二章家庭作业 CS:APP3e chapter 2 homework
- CSAPP(深入理解计算机系统)第二版家庭作业答案-第二章
- 深入理解计算机系统(第二版) 家庭作业 第二章
- 深入理解计算机系统 家庭作业 2.78
- 深入理解计算机系统―第二章――随笔
- 深入理解计算机系统 家庭作业 2.78
- [深入理解计算机系统]第二章-信息的表示与处理
- 深入理解计算机系统 家庭作业 2.70
- 深入理解计算机系统家庭作业答案
- 深入理解计算机系统(第二版) 家庭作业 第十一章
- 深入理解计算机系统 家庭作业 2.93
- 深入理解计算机系统 第二章
- 深入理解计算机系统--第二章(读书笔记)
- 深入理解计算机系统(第二版) 家庭作业 第四章
- 深入理解计算机系统 家庭作业 2.80
- 深入理解计算机系统(第二版) 家庭作业 第十章