有多少xxx精度二进制定点表示?

时间:2015-01-27 04:09:55

标签: verilog

我正在尝试测量转换为二进制定点表示方式时的准确度。 首先我尝试使用这个0.9375。我得到了二进制0.1111。 第二次我尝试使用这个0.9377,我也得到了二进制0.1111

他们之间没有什么不同。

另外我该如何解决这个问题? 还有其他方法吗?转换?

为了您的理解,我让我知道更多的例子, 例如,如果我想将3.575转换为二进制,则3.575为11.1001。 但如果我再次回到十进制,然后3.5625。原始价值如此不同。

1 个答案:

答案 0 :(得分:2)

来自similar question我们:

Base 2:Twos补充4整数,4位小数

-2^3  2^2  2^1  2^0  .  2^-1    2^-2    2^-3    2^-4
  -8    4    2    1  .   0.5    0.25   0.125  0.0625

仅使用4个小数位,所表示的数字仅具有0.0625

的精度
3.575 could be 11.1001 = 2+ 1+ 0.5 + 0.0625 => 3.5625 to low
      or       11.1010 = 2+ 1+ 0.5 + 0.125  => 3.625  to high

这应该表明4位不足以代表" 3.575"准确。

要计算出你需要多少位乘以2的幂,直到你得到一个整数:对于" 3.575"它相当多(50个小数位)。

3.575 * 2^2   = 14.3 (not integer)
3.575 * 2^20  = 3748659.2
3.575 * 2^30  = 3838627020.8
3.575 * 2^40  = 3930754069299.2 (not integer)
3.575 * 2^50  = 4025092166962381.0 (INTEGER) we need 50 bits!

3.575 => 11.10010011001100110011001100110011001100110011001101

乘以2的幂将单词向左移位(<<)当没有小数位时,表示数字完全表示,则移位数是所需的小数位数。 / p>

对于固定点,您最好考虑应用程序所需的精度级别。