这个问题来自群里的小伙伴,我觉得还不错,就自己操作了一下(通过linux操作系统下的vcs来查看结果)刚好老师也讲过一次。
百分号(%)与进制数之间通过阈宽(field width)来实现数据的对齐格式
1.首先是不考虑域宽的情况,即一般情况。
运行代码:
由于a=8‘b1;表示a位宽为8为二进制。用十六进制表示是两位,十进制表示是2的8次方减1位。
仿真结果:
可以看出,由于没有声明阈宽,显示的结果是默认阈宽。十进制是补空格左对齐,其他进制是补0左对齐。
2.考虑域宽值
运行代码:
仿真结果:
可以看出,设置了6位的域宽(大于实际位宽),即十进制左边对齐补空格,其他进制左对齐补0.
当设置域宽小于实际位宽,这里会按照实际位宽显示。这里就不进行操作了。
3.当域宽为负值时
运行代码
仿真结果:
可见十进制和十六进制是右对齐补0,但是8进制造成了显示错误。实际中IEEE1800中,约定阈值宽度只能为正数,所以赋值域宽可能在不同的仿真工具下处理情况不一致。因此,不建议使用赋值域宽。