Binary 将负数与2的补码中的分数进行转换

Binary 将负数与2的补码中的分数进行转换,binary,verilog,signed,twos-complement,Binary,Verilog,Signed,Twos Complement,我想转换数字-0.25。因此,对于4位int和4位frac,0.25等于: 0000_0100 对于负数-1,答案是 1111 但什么是-0.25?如何将这个负数与2的补码中的分数进行转换?要回答这个问题,我需要澄清数字是以定点表示的。现在几乎所有的逻辑都使用二的补码。因此,在二者的补码版本中考虑负数,例如: 签名为4'b1100=-4-1*2^3+1*2^2+0*2^1+0*2^0 固定点二进制中的数字(例如0.25)将表示为: 8'b0000_0100 int 4位为零,分形4位->0*2^

我想转换数字-0.25。因此,对于4位int和4位frac,0.25等于:

0000_0100

对于负数-1,答案是

1111


但什么是-0.25?如何将这个负数与2的补码中的分数进行转换?

要回答这个问题,我需要澄清数字是以定点表示的。现在几乎所有的逻辑都使用二的补码。因此,在二者的补码版本中考虑负数,例如:

签名为4'b1100=-4-1*2^3+1*2^2+0*2^1+0*2^0

固定点二进制中的数字(例如0.25)将表示为:

8'b0000_0100 int 4位为零,分形4位->0*2^-1+1*2^-2+0*2^-3+0*2^-4

另一种计算方法是将这个数乘以整数,找到负数,然后除以这个数记住,2上的乘法是向右移位,2上的除法是向左移位

例如-0.25将如下所示:


MSB中的1是有符号位。在使用有符号逻辑操作时,我们必须记住这一点。

您所说的是所谓的定点数。它们在所有方面都与标准整数或非小数二进制数相同。所以它们是相同的积极和消极。除了定义之外,分数部分实际上并不存在。我的例子的答案是:8'b1111_0111?是吗?不,那是一的补码。现在几乎所有的逻辑都使用二的补码。我建议你先熟悉普通的二进制数,正数、负数、一补数、二补数等等,然后再尝试分数。你需要做家庭作业,在课堂上、互联网上或图书馆里找到所需的信息。论坛没有提供这样的信息。@Serge,我不学习。我对学习Verilog很感兴趣。面对知识匮乏的问题。然而,我已经在网站上找到了我问题的答案。以前有人问过完全相同的问题。
-0.25*2*2= -1. 
-1 = 4'b1111.
shift 2*2 to left = 4'b11_11 = -0.25.
Or we can calculate: -1*2^1 + 1*2^0 + 0*2^-1 + 1*2^-2.