一个看似简单的问题
请问为什么是15,如何得来的?
in verilog 95, in fact, there's no such things about signed or unsigned numbers. It's just some bits.
e.g. reg[3:0] num;
initial begin
num = 4'd15; // then num is 0xf.
end
And 0xf is simply 0x1's 2's complement...
in other words, say, would'd like to do something like:
reg[3:0] a;
reg[3:0] b;
reg[7:0] c;
initial begin
a = -1;
b = -1;
c = a * b;
end
c would be 0xe1, not 1...
So you'd have to take care of your sign instead.
In v2k, it's better, there's a reserved word called signed.
reg[3:0] signed a;
reg[3:0] signed b;
reg[7:0] signed c;
now c = 1.
负数是以补码存在的,-1的补码是11111111。
-1的补码应该01111(寄存器4位,符号位1位)
好东西阿
大家鼓掌
111
.........
这是一个,看似简单,实际也很简单的问题。
4楼哥们,汗一个,不要误导啊.....
看似简单,其实就是这么简单,4位操作数,-1 补码本来就是1111
-1的8bit补码明显是11111111。
原码:1(符号位)000 0001
反码:1(符号位)111 1110
补码:1(符号位)111 1111(反码加1)
补码a
-1的4BIT补码是1111.被UNSIGNED一下就成15了
没有规定位宽都是32位的,-1补码是FFFFFFFF
赋值给reg的时候只取低4位
忘掉负数,世界就亲近了
数字逻辑中负数都是用2‘s补码表示的
