各位兄弟姐妹大家好,小弟这两天正在苦心学习verilog,书中看到一段话不太明白:
简单的十进制数格式的整数代表一个有符号的数,负数可使用两种补码形式表示。因此32在5位的二进制形式中为10000,在6位二进制形式中为110001;-15在5位的二进制形式中为10001,在6位二进制形式中为110001。
请问第一个110001是不是错了?如果错了,那应该是什么?
第二个110001是直接在10001之前补1得来的么?
另外还有一个问题,书中有这么一例:
//带6个隐含寄存器的电路
module count(clock,reset,and_bits,or_bits,xor_bits);
input clock,reset;
output and_bits,or_bits,xor_bits;
reg and_bits,or_bits,xor_bits;
reg [2:0] count;
always @(posedge clock)begin
if(reset)
count=0;
else
count=count+1;
and_bits=&count;
or_bits=|count;
xor_bits=^count;
end
endmodule
书上说在这个例子里共用了6个触发器,其中3个保存count的值,其他的分别保存and_bits,or_bits和xor_bits的值。
小弟不才,不知触发器是什么,请大哥大姐们指点指点。谢谢。
关于触发器,建议先好好学学数字电路,这个一两句话很难说清的
reg and_bits,or_bits,xor_bits;
reg [2:0] count; //reg定义寄存器变量,Verilog看起来依旧那么亲切
个人认为:32在5位二进制中表示为00000,无法表示,因为除去符号位,剩下4位,表示不了32这么大的数。只能最多表示15。
-15在5位二进制中可以表示, 补码就是符号位为1,其他各位 "逐位求反,末位加1",所以是正确的
11111→10000→10001
101111→110000→110001
后面俩是正确的
楼上正确,-15的补码 就是 10001
最高位是符号位,负数的符号位是1
原码:11111 -》 反码 10000 -》 补码 10001