我正在尝试测量转换为二进制定点表示方式时的准确度。 首先我尝试使用这个0.9375。我得到了二进制0.1111。 第二次我尝试使用这个0.9377,我也得到了二进制0.1111
他们之间没有什么不同。
另外我该如何解决这个问题? 还有其他方法吗?转换?
为了您的理解,我让我知道更多的例子, 例如,如果我想将3.575转换为二进制,则3.575为11.1001。 但如果我再次回到十进制,然后3.5625。原始价值如此不同。
答案 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>
对于固定点,您最好考虑应用程序所需的精度级别。