verilog中有符号与无符号变量区别


reg [7:0] a1,a2,a3,a4,b1,b2,b3,b4;

a1=-4;

a2=-8'd4;

a3=-(8'd4);

a4=-8'sd4;

b1=-12/3;

b2=-8'd12/3;

b3=-(8'd12/3);

b4=-8'sd12/3;


=> a1= 1111_1100   a2= 1111_1100  a3= 1111_1100  a4= 1111_1100   b1= 1111_1100   b2= 0101_0001  b3= 1111_1100  b4= 1111_1100


总结:-12 等价于-8’sd12,会被存储成有符号数,在运算时会用其绝对值,运算后再换算成对应的负数存储(补码);而-8‘d12/3会被认为是无符号数进行两次运算(先左边取反,再做右边除法),其结果是左边取反后负数的补码再做除法。

你可能感兴趣的:(verilog/VHDL)