- 在所有由五个 $1$ 和三个 $0$ 组成的 8 位二进制整数 (补码形式) 中, 最小的数是 10001111, 最大的数是 01111100.
- 已知 $[X]_{补码}$=0x0043, $[Y]_{补码}$=0xCE50, 则 $[X+Y]_{补码}$= 0xCE93, $[X-Y]_{补码}$= 0x31F3. ($X$、$Y$ 的数据位宽均为 16 位, 计算结果用 16 进制的补码表示)
- 假设存在一种 16 位的浮点数表示, $exp$ 位数是 7, $frac$ 位数是 8, 符号位数是 1, 其所能表示的最大的非规格化数的 $exp$ 是 0000000, $frac$ 是 11111111; 250 (十进制数) 的 $exp$ 是 1000110, $frac$ 是 11110100. (请用 0、1 位串表示答案)
- 假设存在一种 9 位浮点数 (符合 IEEE 浮点数标准), 符号位数是 1, $exp$ 位数是 4, $frac$ 位数是 4. 其数值被表示为 $V = (-1)^S × M × 2^E$ 形式. 请在下表中填空.
$Binary$: 该浮点数的 9 位二进制表示; $M$:表示为十进制数; $E$:表示为十进制整数;
$Value$: 被表示的具体数值, 十进制数表示.
描述 | Binary | M | E | Value |
---|---|---|---|---|
5.0 | 010010100 | 1.25 | 2 | 5.0 |
最小的大于 0 浮点数 | 000000001 | 0.0625 | -6 | 0.0009765625 |
给定相同的字长 (例如 32 位) , 能表示的定点数多还是浮点数多?
答:
- 能表示的定点数个数多.
- 对32位浮点数而言, 如果exp位置全为1, 会产生 $\infty$ 与 $NaN$, 进而个数少于 $2^{32}$;
- 而对32位定点数而言, 固定小数点都能产生 $2^{32}$ 个不一样的数.
- 推广到其他字长, 这都是成立的.
- 因此给定相同的字长, 能表示的定点数个数更多.
假设存在一种 16 位浮点数 (符合 IEEE 浮点数标准) , $exp$ 位数是 5, $frac$ 位数是 10, 符号位数是 1. 某同学对该格式的一个数 $x$ 执行了 (整数的) 按位右移操作, 得到了 80.5. 若右移操作按有符号数执行 (算术右移) , 原来的数可能是 不存在, 若右移操作按无符号数执行 (逻辑右移) , 原来的数可能是 -0.04736328125 或 -0.047393798828125 (列出所有情况或填入“不存在”, 数可以用小数或分数来表示, 必须精确).
使用不超过 4 次位运算或加减运算完成整数运算 $y = x * 85$ (允许引入临时变量, 不需考虑溢出的情况) .
答:
- $tmp1 = x << 2$ ( $tmp1 = x * 4$ )
- $tmp2 = tmp1 + x$ ( $tmp2 = x * 5$ )
- $tmp3 = tmp2 << 4$ ( $tmp3 = x * 80$ )
- $y = tmp3 + tmp2$ ( $y = x * 85$ )