推荐答案
测试一下
题目
7.2 N位bit位宽表示范围
参考答案与知识点
参考答案
两个8bit有符号数相乘,结果需要的位宽为16bit。
解析:根据基本规律,两个N位有符号数相乘,结果位宽为2N位。这是因为相乘操作会使数值范围扩大,无符号数相乘结果最大为(2^N-1)^2 ≈ 2^(2N),需要2N位表示;有符号数相乘,绝对值最大可达(2^(N-1))^2 = 2^(2N-2),但考虑到负数的补码表示,结果范围实际上可以从-(2^(N-1))*(2^(N-1)-1)到(2^(N-1))^2,最大绝对值仍为2^(2N-2),但为了完整覆盖所有可能结果,通常取2N位。具体到8位有符号数(范围-128~127),乘积最大值为(-128)*(-128)=16384,最小值为(-128)*127=-16256。16384需要用15位有符号数表示,但15位有符号数正数最大为16383,无法表示16384,因此需要16位(范围-32768~32767)。16位是安全且符合常规设计的选择。若已知操作数具体范围,可适当缩减位宽,但题目未提供,故按通用规则:8位×8位=16位。
易错点:考生可能误以为乘积最大值为127*127=16129,从而得出15位足够;但忽略(-128)*(-128)=16384更大。同时也需注意有符号数乘法溢出风险,在数字IC设计中通常保留结果位宽为两个操作数位宽之和,避免数据丢失。
涉及知识点
- 有符号数补码表示范围
- 乘法运算位宽扩展规则
- 定点数运算中的精度与范围
- 溢出判断与位宽设计