家庭作业(第二章、第三章)

家庭作业(第二章3一题,2星两题;第三章1星两题,共9

一、第二章

***2.66.写出代码实现如下函数int leftmost_one(unsigned x),函数遵循位级整数编码规则,假设数据类型int32位。代码最多只能包含15个算术运算、位运算和逻辑运算

int leftmost_one(unsigned x)

{

  if(x==0)

  {

    return x;

  }

  if(x>(1<<31))

  {

    return 0x80000000;

  }

  x|=(x>>1);

  x|=(x>>1);

  x|=(x>>1);

  x|=(x>>1);

  x|=(x>>1);

  x+=1;

  x=x>>1;

  return x;

}

**2.76.生成一段代码,将整数变量x乘以不同的常数因子K,为提高效率,只使用+-<<运算,对于下列K值写出执行乘法运算的C表达式,每个表达式中最多用3个运算

A.K=5:  (x<<2)+x

B.K=9:  (x<<3)+x

C.K=30:  (x<<5)-(x<<1)

D.K=-56:  (x<<3)-(x<<6)

**2.82.一些数字的二进制表示是由形如0.yyyyy……的无穷串组成,y是一个k位的序列。例如1/3的二进制表示是0.010101……(y=01)

A.设Y=B2Uk(y),这个数有二进制表示y。给出一个由Yk组成的公式表示这个无穷串的值  x=Y/(2^k-1)

B.对于下列y值,串的数值是多少?

(a)001  x=1/7

(b)1001  x=3/5

(c)000111  x=1/9

二、第三章

*3.54.一个函数的原型为int decode2(int x, int y, int z);

 

int decode2(int x, int y, int z)
{
    int k;
    z -= y; 
    k = z; 
    k<<= 15;
    k>>= 15;
    return  k*(z^x);
}

*3.69.

 

 

long trace(tree_ptr tp)
{
    long ret = 0;
    while(tp != NULL)
    {
        ret = tp->val;
        tp = tp->left;
    }
    return ret;
}

作用是从根一直遍历左子树,找到第一个没有左子树的节点的值。

原文地址:https://www.cnblogs.com/20135228guoyao/p/4891523.html