System verilog 为什么我不能在SystemVerilog的逻辑中存储16位?!

System verilog 为什么我不能在SystemVerilog的逻辑中存储16位?!,system-verilog,System Verilog,我目前在尝试将来自模块输入的16位数字存储到逻辑变量中时遇到问题。当我在测试台上将所有位设置为高位时,我得到一个值:000000000000000 1。希望你能帮忙!抱歉,不知道如何在这里插入代码 我的代码如下所示: 我认为您的问题可能与这一行有关: regy = (!regy)+1; regy是一个16位的值。对多位值使用求反运算符(!)相当于(value!=0)。因此,对于regy中除零以外的任何值,将regy设置为1 如果要反转所有位并添加1,则需要使用~运算符 例如: regy = (

我目前在尝试将来自模块输入的16位数字存储到逻辑变量中时遇到问题。当我在测试台上将所有位设置为高位时,我得到一个值:000000000000000 1。希望你能帮忙!抱歉,不知道如何在这里插入代码

我的代码如下所示:


我认为您的问题可能与这一行有关:

regy = (!regy)+1;
regy
是一个16位的值。对多位值使用求反运算符
(!)
相当于
(value!=0)
。因此,对于
regy
中除零以外的任何值,将
regy
设置为1

如果要反转所有位并添加1,则需要使用
~
运算符

例如:

regy = (~regy)+1;

~x+1
是一个两补倒置,可以写成
-x