深入了解计算机系统
tiantiant1
这个作者很懒,什么都没留下…
展开
-
习题 2.64
int any_even_one(unsigned x){ return !(0xaaaaaaaa^x); }原创 2012-11-29 13:20:05 · 340 阅读 · 0 评论 -
深入了解计算机系统 家庭作业 2.68
/* *Make with least signficant n bits set to 1 *Assume 1<=n<=w */ int lower_bits(int x,int n){ x|=1<<n-1; return x; } 我对这一题的理解是把x的低n位全部赋为1.。。。。。。。。。。原创 2012-12-01 14:15:02 · 450 阅读 · 0 评论 -
深入了解计算机系统 练习题 2.69
/* *Do rotating right shift. Assume 0<=n<=w *Examples when x=0x12345678 and w=32: * n=4 ->0x81234567,n=20 ->0x45678123 */ unsigned rotate_right(unsigned x,int n){ /*计算位数*/ int w=sizeof原创 2012-12-01 14:35:39 · 409 阅读 · 0 评论 -
深入了解计算机系统 家庭作业 2.66
int leftmost_one(unsigned x){ x|=x>>1; x|=x>>2; x|=x>>4; x|=x>>8; x|=x>>16; return (x&((~x)>>1)|0x80000000)); } 原理是:先把最高位1右边的全部变为1;对x取反,然后向右移1,这样以后转换后的数的最低位1与装换前最高位1在统一位;之后最高位赋为1,然原创 2012-12-01 13:40:25 · 380 阅读 · 0 评论 -
深入了解计算机系统家庭作业 2.72
void copy_int(int val,void *buf,int maxbytes){ if(maxbytes>=sizeof(val)) memcpy(buf,(void*)&val,sizeof(val)); }原创 2012-12-03 20:40:08 · 463 阅读 · 0 评论 -
深入了解计算机系统 家庭作业 2.73
#include int saturating_add(int x,int y){ int z=x+y; (x&INT_MIN)&&(y&INT_MIN)&&!(z&INT_MIN)&&(z=INT_MIN); !(x&INT_MIN)&&!(y&INT_MIN)&&(z&INT_MIN)&&(z=INT_MAX); return z; } 第一个判别x与y是否同时原创 2012-12-03 21:34:06 · 540 阅读 · 0 评论 -
深入了解计算机系统 练习题2.74
#include int tsub_ovf(int x,int y){ int z=0; /* x0,x-y>0,执行z=1 */ (x&INT_MIN)&&!(y&INT_MIN)&&!((x-y)&INT_MIN)&&(z=1); /* x>0并且y<0,x-y<0,执行z=1;*/ !(x&INT_MIN)&&(y&INT_MIN)&&((x-y)&I原创 2012-12-10 12:57:59 · 506 阅读 · 0 评论