verilog: 看代码时遇一问题:把两个12位的数扩展成13位相加,为啥在前面补最高位,不应该补0吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog: 看代码时遇一问题:把两个12位的数扩展成13位相加,为啥在前面补最高位,不应该补0吗?相关的知识,希望对你有一定的参考价值。
默认的reg类型是unsigned。所以需要程序员自己判断这个变量是不是有可能是负数。有可能的话就需要做符号扩展。就是你看见的东西。如果声明成signed reg的话,就不需要做扩展了,只需要保证被赋值的变量位数够用就行了。追问
如果原来的符号位为1,那么数不是变了吗?如1_1011(-11)变成11_1011(-27)
追答你写的数都是-5. 取反加一。
追问也就是说我们处理的数据都是以补码形式表示的
参考技术A 这样应该是减法吧,变成补码相加的 参考技术B 是不是 有符号位的加法,最高位可能代表符号吧?最好贴出上下文看看。追问
如果原来的符号位为1,那么数不是变了吗?如1_1011(-11)变成11_1011(-27)
追答关键代码贴出来看看啊,否则怎么帮你分析?
以上是关于verilog: 看代码时遇一问题:把两个12位的数扩展成13位相加,为啥在前面补最高位,不应该补0吗?的主要内容,如果未能解决你的问题,请参考以下文章
Verilog中,判断两个数是不是相等,一个数16位,一个数17位,16位的能自动补0吗?