一群问题
首先是关于《深入理解计算机系统》的:
1.P41 练习题2.14只使用位级和逻辑运算,写出等价x==y
当时对于^的作用理解并不清楚,所以写了一个很冗长的判别式,不知对不对
!(((~x)&y)%%1)
2.P52 练习题2.21
- C/C++ code
int fun1(unsigned word){return (int) ((word<<24)>>224);}int fun2(unsigned word){return ((int)word<<24)>>24;}
假设是32位字长的机器,有符号数值的右移是算术右移,无符号右移是逻辑右移
w=256,问fun1(256),fun2(256)
我的结果是256和0xffffff00
结果答案是两个0,能否讲解下?
3.P78 示例代码中
- C/C++ code
double recip(int demon){return 1.0/(double) demon;}..void test(int demon){double r1,r2;int t1,t2;r1=recip(demon);//stored in memoryr2=recip(demon);//stored in register..}
关键在那两句注释,为什么同样的调用,存储的地方就不一样了呢??
最后还有一个玩游戏想到的问题:
魔兽争霸的网上对战怎么实现的,它的数据在哪里处理啊,是建房的,还是平台(浩方,VS),还是其他什么的,简介下,顺便介绍本书吧,谢谢!
另外局域网对战呢,难道所有数据都在主机上面处理的??
[解决办法]
1!(((~x)&y)%%1)
怎么还有%%?
2你算一下256<<24等于几
3浮点数寄存器内容是调用者保存,因此调用第二次recip之前要放进内存