HDLBit练习 Exams/ece241 2014 q1c有符号数溢出的判断

计算机中有符号数采用补码进行运算。

溢出的判断

1.在加法运算中,如果次高位(数值位最高位)相加形成进位,而最高位(符号位)相加(包括次高位的进位)却没有进位时,则结果溢出。或则相反,如果次高位无进位,而最高位有进位则结果溢出。
2.在减法运算中,如果次高位不需要借位,而最高位需要借位,则结果溢出。或者相反,如果次高位需要借位,而最高位不需借位,则结果溢出。

怎么理解呢:其实减法运算等价于加法运算,因此溢出只会发生在两个正数相加或者两个负数相加。
而两个整数相加发生溢出时,次高位(数值位最高位)相加形成进位,而最高位(符号位)相加(包括次高位的进位)没有进位时,此时符号位由0变1,产生溢出。
两个负数相加时,次高位无进位,而最高位有进位,此时符号位由1变0,产生溢出。

来看看这个题。
Assume that you have two 8-bit 2’s complement numbers, a[7:0] and b[7:0]. These numbers are added to produce s[7:0]. Also compute whether a (signed) overflow has occurred.

module top_module (
    input [7:0] a,
    input [7:0] b,
    output [7:0] s,
    output overflow
); //
    
    assign s = a+b;
    assign overflow = (~s[7]&a[7]&b[7])|(s[7]&(~a[7])&(~b[7]));
    
    
 
    // assign s = ...
    // assign overflow = ...

endmodule

解题思路就是根据两个正数相加和两个负数相加产生溢出的情况。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值