你的置位运算符用的不太对,a+b它也是当成两位数来进行计算的,所以,等式的左边是5位,右边是4位表达式,左边的最高位自动设置为0
hui3462(2009-4-15 17:34:49)
楼上说的MS是对的
gatezte2008(2009-4-15 20:57:16)
可是我也试过这种情况没有问题: reg [3:0] sum; reg cout; input [3:0] a,b; input cin; {cout,sum}=a+b+cin; /* 这种它能正确把进位位赋给cout,a,b都是4位呀,可是等式左边也是5位,为什么就没有问题呢? */
larkin920(2009-4-15 23:52:11)
最好是先对a和b进行符号位扩展后再实现加法运算!
fucloudsea(2009-4-24 14:04:18)
{cout,sum}=a+b+cin; 这种情况下,a+b+cin软件自动把结果扩展成5位,所以这个没有问题的,但是在位操作符里,没有做这样的自动扩展
网友评论