## 2.65 定义一次操作为将 $w$ 位的整数 $x$ 从中间分成两个 $\frac{w}{2}$ 位的整数 $y$ 和 $z$,接着令 `x=y^z`。进行该操作 5 次后得到答案。 我们将这样的思路称为“折半递归法”。 ## 2.66 第 $k$ 次操作,令 `x = x | (x >> (1 << (k - 1)))`。通过 5 次操作即可实现提示中的转换。 ## 2.75 $x,y$ 是补码数,$x'=T2U_w(x),y'=T2U_w(y)$。 $$ \begin{aligned} x'\cdot y'&=(x+x_{w-1}\cdot 2^w)\times(y+y_{w-1}\cdot 2^w)\\ &=x\cdot y+(x_{w-1}\cdot y+y_{w-1}\cdot x)2^w+x_{w-1}\cdot y_{w-1}\cdot 2^{2w} \end{aligned}$$ 进一步,令 `a = signed_high_prod(x, y), b = unsigned_high_prod(x', y')`,有 $$b\cdot 2^w+x'*^u_w y'=a\cdot 2^w+T2U_w(x*^t_wy)+(x_{w-1}\cdot y+y_{w-1}\cdot x)2^w+x_{w-1}\cdot y_{w-1}\cdot 2^{2w}$$ 化简得 $$b=a+x_{w-1}\cdot y+y_{w-1}\cdot x+x_{w-1}\cdot y_{w-1}\cdot 2^w$$ 即 $$\begin{aligned} b&=(a+x_{w-1}\cdot y+y_{w-1}\cdot x)\bmod 2^w\\ &=T2U_w(a)+^u_t x_{w-1}\cdot y'+^u_t y_{w-1}\cdot x' \end{aligned}$$ ## 2.80 先得到粗糙的结果 `(x >> 2) + ((x >> 2) << 1)`,再根据 `x & 3` 以及 $x$ 的符号(决定舍入方向)进行修正。 ## 2.97 注意在某些情况下,舍入会导致有效位数增加。