CSAPP: Datalab
作者:互联网
一、实验要求
实现如下几个问题:
对于int的问题,只能使用基本的位运算,对于float的,可是使用额外的控制语句。
二、预备知识
整型的表示方法:
![]()
![](data:image/png;base64,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)
![]()
浮点数表示方法:
一般浮点数采用IEEE 754标准表示 V=
。
根据exp的值,float数可被分为3中情况,以单精度浮点数为例:
-
无符号数:
-
有符号数:
- S为符号位,占1bit。
- E为阶码,在单精度浮点数中占8位,双精度浮点数中占10位。
- M为尾数,范围时1~2-e或0~1-e。
- 规格化的值。
- exp处表示的值为e, e需要满足e>0 && e<255。
- 偏移量Bias=2^8-1=127,阶码 E=e-Bias。
- frac字段表示的值为f,尾数 M=1+f。
- 非规格化的值。
- exp处表示的值为e, e需要满足e=0。
- 偏移量Bias=2^8-1=127,阶码 E=1-Bias。
- frac字段表示的值为f,尾数 M=f。
- 特殊值。
- exp处表示的值为e, e需要满足e=255。
- 偏移量Bias=2^8-1=127,阶码 E=e-Bias。
- frac字段表示的值为f,f=0是,表示为无穷,f !=0 时,表示NaN。
int bitXor(int x, int y) { int result = (~(~x&y))&(~(x&~y)); return ~result; } //A ~A B ~B A&~B B&~A ~(A&~B) ~(B&~A) //1 0 0 1 0 1 1 0 //1 0 1 0 0 0 1 1 //0 1 0 1 0 0 1 1 //0 1 1 0 1 0 0 1有符号最小数 tmin
int tmin(void) { //1左移31位 int result = 1<<31; return result; }判断是不是有符号最大数 tmax
int isTmax(int x) { // x==max/x==0xffffff时,~x^(x+1)为0x0000000 // !!(~x)去掉x==0xfffffff的情况 int ret = !!(~x)&!(~x^(x+1)); return ret; }判断奇数位是否都为1 allOldBits
int allOddBits(int x) { //移位和加法构造模式数0xAAAAAAAA //用模式数&来过滤不同的数 int tmp = (170<<8)+170; int ret = 0; tmp = (tmp<<8)+170; tmp = (tmp<<8)+170; ret = !((tmp&x)^tmp); return ret; }求负数 negate
int negate(int x) { //取反码,加一 return (~x)+1; }判断是不是ascii数字 isAsciiDight
int isAsciiDigit(int x) { //高26位应当为0 int high = x&(~63); //第5,6位应当为1 int low = x&48; //最后4位加6不应当向第5位进位 int low2 = x&15; int ret = (!high)&(!(low^48))&(!((low2+6)&(~15))); return ret; }条件判断语句conditional
int conditional(int x, int y, int z) { //将x转为bool值,0,1 int bool_x = !x; //利用0、1构造掩码111111、0000000 //0->1111111->0000000;1->11111110->1111111 int mask = ~(~bool_x+1); //异或清除相同数字 int ret = (~mask&y)^(mask&z)^y^z; return ret; }判断是不是小于等于isLessOrEqual
int isLessOrEqual(int x, int y) { int nege_x = (~x)+1; int sum = y+nege_x; int sign_mask = 1<<31; //x的符号位 int sign_x = sign_mask&x; //y的符号位 int sign_y = sign_mask&y; //如果x<0且y>0,结果位true //如果x和y符号位相同,且y+(-x)<0,结果为true。符号位相同不会有溢出 int ret = (!!sign_x&!sign_y) | (!(sign_x^sign_y)&!(sign_mask&sum)); return ret; }逻辑非 logicNeg
int logicalNeg(int x) { //0的负数仍未0,符号位不变 //其他数的负数符号位会变 int ret = ~(((~x+1)|x)>>31)&1; return ret; }表示X需要最小的bit位 howMangBits
int howManyBits(int x) { int b16,b8,b4,b2,b1,b0; int sign=x>>31; //如果x为正则不变,否则按位取反(这样好找最高位为1的,原来是最高位为0的,这样也将符号位去掉了) x = (sign&~x)|(~sign&x); // 不断缩小范围 b16 = !!(x>>16)<<4;//高十六位是否有1 x = x>>b16;//如果有(至少需要16位),则将原数右移16位 b8 = !!(x>>8)<<3;//剩余位高8位是否有1 x = x>>b8;//如果有(至少需要16+8=24位),则右移8位 b4 = !!(x>>4)<<2;//同理 x = x>>b4; b2 = !!(x>>2)<<1; x = x>>b2; b1 = !!(x>>1); x = x>>b1; b0 = x; return b16+b8+b4+b2+b1+b0+1;//+1表示加上符号位 }单精度浮点数乘2 floatScale2
unsigned floatScale2(unsigned uf) { int sign = uf&(1<<31); int exp = (uf>>23)&255; //非规格化数 //左移1×2,加上符号位 if(exp==0) return uf<<1 | sign; //Nan值和无穷大 if(exp==255) return uf; //规格化数 //exp+1 return uf+(1<<23); }浮点数转int floatFloat2Int
int floatFloat2Int(unsigned uf) { int sign = (uf>>31)&1; //偏执量为127 int exp = ((uf>>23)&255) - 127; int frac = uf&(~(511<<23)); //溢出过大 if(exp>31) return 0x80000000u; //exp小于0 if(exp<0) return 0; //frac加上默认的1 frac += (1<<24); //小于24,右移 if(exp<=24) frac = frac >> (24-exp); //大于24,左移 else if(exp<=30) frac = frac << (exp-23); //如果符号位为1,转负数 if(sign) frac = ~frac+1; return frac; }2幂次的浮点数表示 floatPower2
unsigned floatPower2(int x) { // int ret =1; //太大 if(x>128) return 0x7f800000; //太小 if(x<-126) return 0; //加上偏移127 return (x+127)<<23; }四、实验结果
Correctness Results Perf Results Points Rating Errors Points Ops Puzzle 1 1 0 2 8 bitXor 1 1 0 2 1 tmin 1 1 0 2 8 isTmax 2 2 0 2 9 allOddBits 2 2 0 2 2 negate 3 3 0 2 13 isAsciiDigit 3 3 0 2 10 conditional 3 3 0 2 16 isLessOrEqual 4 4 0 2 6 logicalNeg 4 4 0 2 36 howManyBits 4 4 0 2 10 floatScale2 4 4 0 2 20 floatFloat2Int 4 4 0 2 5 floatPower2 Score = 62/62 [36/36 Corr + 26/26 Perf] (144 total operators)
标签:CSAPP,return,符号,int,浮点数,Datalab,ret,exp 来源: https://www.cnblogs.com/skyliulu/p/12966053.html