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.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的幂将字向左移动(<<
)当没有小数位剩余时表示该数已完全表示,则移位数为所需的小数位数.
对于定点,您最好考虑应用程序所需的精度级别。
我正在尝试测量转换为二进制定点表示方式时的准确性。 首先我尝试使用这个 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.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的幂将字向左移动(<<
)当没有小数位剩余时表示该数已完全表示,则移位数为所需的小数位数.
对于定点,您最好考虑应用程序所需的精度级别。