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

How much have xxx precision binary fixed point representation?

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

它们之间没有什么不同。

还有我该如何解决这个问题? 还有别的办法吗?要转换 ?

为了您的理解,我再举一些例子, 例如,如果我想将 3.575 转换为二进制,那么 3.575 就是 11.1001。 但如果我再次回到十进制,那么 3.5625。和原来的价值相差那么大。

我们有:

基数 2:二进制补码 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.5​​75”。

要计算出您需要乘以 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的幂将字向左移动(<<)当没有小数位剩余时表示该数已完全表示,则移位数为所需的小数位数.

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