2.1 用最高位进位C_(f)oplus次高位进位C_(d)判断是否溢出:设x=+0.1001B,y=-0.0001B[x]_(补)=[填空1]B[y]_(补)=[填空2]B[x+y]_(补)=[填空3]BC_(f)=[填空4](填0或1)C_(d)=[填空5](填0或1)最高位进位oplus次高位进位=[填空6](填0或1)[填空7]溢出(填有或无)
题目解答
答案
为了解决这个问题,我们需要遵循以下步骤:
- 确定 $x$ 和 $y$ 的补码表示。
- 将 $x$ 和 $y$ 的补码表示相加,得到 $[x+y]_{补}$。
- 确定最高位进位 $C_f$ 和次高位进位 $C_d$。
- 计算 $C_f \oplus C_d$。
- 根据 $C_f \oplus C_d$ 的值判断是否溢出。
让我们从第一步开始。
第1步:确定 $x$ 和 $y$ 的补码表示
给定:
$x = +0.1001B$
$y = -0.0001B$
正数的补码与原码[1]相同,因此:
$[x]_{补} = 0.1001B$
负数的补码是原码的反码加1。 $y$ 的反码是 $1.1110B$,加1得到:
$[y]_{补} = 1.1111B$
第2步:将 $x$ 和 $y$ 的补码表示相加
$[x+y]_{补} = [x]_{补} + [y]_{补} = 0.1001B + 1.1111B$
将这两个二进制[2]数相加:
$\begin{array}{c@{}c@{}c@{}c@{}c} & 0. & 1001 \\+ & 1. & 1111 \\\hline10. & 1000 \\\end{array}$
和是 $10.1000B$。由于我们处理的是定点数,小数点左边的进位被丢弃,因此:
$[x+y]_{补} = 0.1000B$
第3步:确定最高位进位 $C_f$ 和次高位进位 $C_d$
最高位进位 $C_f$ 是小数点左边的进位,即1。
次高位进位 $C_d$ 是小数点左边第二位的进位,即0。
第4步:计算 $C_f \oplus C_d$
$C_f \oplus C_d = 1 \oplus 0 = 1$
第5步:根据 $C_f \oplus C_d$ 的值判断是否溢出
如果 $C_f \oplus C_d = 1$,则发生溢出。如果 $C_f \oplus C_d = 0$,则没有溢出。
由于 $C_f \oplus C_d = 1$,没有发生溢出。
最终答案
$[x]_{补} = 0.1001B$
$[y]_{补} = 1.1111B$
$[x+y]_{补} = 0.1000B$
$C_f = 1$
$C_d = 0$
$C_f \oplus C_d = 1$
$\text{无溢出}$
因此,答案是:
$\boxed{0.1001B, 1.1111B, 0.1000B, 1, 0, 1, 无}$