第 15 题
下列关于整数乘法运算的叙述中,错误的是()。
A. 用阵列乘法器实现乘运算可以在一个时钟周期完成
B. 用 ALU 和移位器实现的乘运算无法在一个时钟周期内完成
C. 变量与常数的乘运算可编译优化为若干条移位及加/减运算指令
D. 两个变量的乘运算无法编译为移位及加法等指令的循环实现
[tag_link]
正确答案:D
参考 该节 ,我们逐项分析: A. 用阵列乘法器实现乘运算可以在一个时钟周期完成 ✅ 阵列乘法器(array multiplier)是一种 并行结构 ,硬件资源充足的情况下,确实可以在一个时钟周期内完成乘法运算(代价是面积大)。因此这个说法是 正确的 。B. 用 ALU 和移位器实现的乘运算无法在一个时钟周期内完成 ✅ 这种方式对应的是 串行乘法器 ,通过不断地移位与加法模拟乘法过程,至少需要多个时钟周期完成,因此 正确 。C. 变量与常数的乘运算可编译优化为若干条移位及加/减运算指令 ✅ 例如 x * 10 可编译为 (x « 3) + (x « 1) ,这是常见的编译器优化技术,因此此项 正确 。D. 两个变量的乘运算无法编译为移位及加法等指令的循环实现 ❌ 这项是 错误的 。事实上,若没有硬件乘法器,编译器或低级代码确实可以将变量之间的乘法(如 a * b )转换为循环移位加法实现。比如使用 Booth 算法 、 加移法(shift-and-add) 等。因此选项 D 的说法是错误的。