关于sv的一个数据赋值的疑问
时间:10-02
整理:3721RD
点击:
二话不说,先上代码:
function
bit sel=1;
int a;
a = ~sel;
endfunction
打印出来的结果有点儿让我毁三观, a是-2居然?!
我明白直接对32bit的1取反是-2,可是咱是先对1bit的sel取反的,结果是0然后再赋值给a的啊!
这个运算赋值过程究竟是怎么样的呢?
求大神指点,谢谢!
function
bit sel=1;
int a;
a = ~sel;
endfunction
打印出来的结果有点儿让我毁三观, a是-2居然?!
我明白直接对32bit的1取反是-2,可是咱是先对1bit的sel取反的,结果是0然后再赋值给a的啊!
这个运算赋值过程究竟是怎么样的呢?
求大神指点,谢谢!
强制转换了
你的意思是强制将右边的数据类型转换为左边的类型了吗?
没错
好吧,只能这么理解了,不过这么久才知道,还是觉得挺毁三观的。
没有啥不可理解的,语法就是这样定义的,对齐左右=2边的位宽为最大位宽。