FPGA里面怎么处理signed与unsigned相加的问题呢?
时间:10-02
整理:3721RD
点击:
比如5 + (-6)
0101
1010
--------------
1111
系统是怎么知道这个答案是15还是-1 ?
0101
1010
--------------
1111
系统是怎么知道这个答案是15还是-1 ?
处理的数据是正负数的补码,我这里假设你的数据位宽为4位,但是最高位是符号位,0代表正数,1代表负数。
+5的补码为0 101,至于-6,1 110,它的反码是 1 001,补码是 1 010(1 110取反加1得到,符号位不变),然后0 101+1 010=1 111,根据符号位判断必然是负数,将它-1再取反得到1 001,就是-1呦。希望帮到了你。
0101+1010=1111;那么1111既可以是5+6=15,也可以认为5-6=-1,这一点不矛盾啊。
fpga是不会处理unsigned+signed的情况的。
对,我就是想问signed和unsigned相加会怎么样
FPGA默认不会这样处理;编写程序可以强制处理,也是没问题的。
比如:C<=unsigned(A)+signed(B);只要注意C的位宽即可。
3楼正解
