updated:

补码转换为无符号数与截断补码数值


[latexpage] 假设有w位补码表示的数x,则将x转换为无符号数的函数\(T2U_{w}(x)\)为\[T2U_{w}(x) = \begin{cases}x + 2^w & x < 0\\x & x \geq 0\end{cases}\]其中,\(x + 2^w\)可以看作是\(x + 2^{w - 1} + 2^{w - 1}\),即对最高位作用的抵消。 还有一种方法:令 \(\overrightarrow{x} = [x_{w-1}, x_{w-2}, ..., x_0]\) 且 \(x = B2T_w(\overrightarrow{x})\) 。则 \(x < 0\) 时,\(T2U_{w}(x) = x\ mod\ 2^w\)。将x的低k位转换为无符号数的函数为 \[T_w2U_k(x) = x\ mod\ 2^k\] 此处应用属性 \(\forall i \geq k, 2^i\ mod\ 2^k = 0\) 因此,将w位的补码截断到k位补码的函数为 \[T_w2T_k(x) = U2T_k(x\ mod\ 2^k)\]


← Prev Bash shell编程tips | 对复杂声明的分析 Next →