← 美满电子——李锐博恩

推荐答案 测试一下

Let X = 8'b0001_1010,Y = 5'b10000;

问答题 中等 经典问答问答题

参考答案

要实现 X - Y,X 为 8 位,Y 为 5 位,首先需将 Y 符号扩展为 8 位。Y = 5'b10000 是 5 位有符号数,最高位为 1,表示负数,其真值为 -16。符号扩展后为 8'b1111_0000。减法运算可转化为加法:X - Y = X + (-Y) = X + (~Y + 1),其中 ~Y 是 Y 按位取反,+1 得补码。具体步骤:1) 将 Y 符号扩展为 8 位,得到 8'b1111_0000;2) 对该 8 位数按位取反得 8'b0000_1111;3) 加 1 得 8'b0001_0000;4) 与 X = 8'b0001_1010 相加得 8'b0010_1010,即为结果 42?注意:X=26, Y=-16,26-(-16)=42,正确。另一种直接用二进制减法器,但EDA工具通常用补码加法实现。实际硬件中,减法器可通过加法器加取反进位实现,即使用一个二选一选择器,在减法控制信号下对 Y 取反并设置加法器进位为 1。算法核心:补码运算,注意符号扩展对齐位宽。

涉及知识点

  • 补码减法
  • 符号扩展
  • 二进制加法器实现减法
  • 有符号数运算
  • 位宽对齐处理
← 上一题
登录后反馈错题
下一题 →