【发布时间】:2023-03-19 19:33:01
【问题描述】:
更具体地说,2n 位二进制数,n 位整数(包括一位符号)和 n 位小数。
我们可以表示的最小和最大的非零正数是多少?
我知道如何处理整数,但不确定分数。
【问题讨论】:
-
这称为fixed point 表示。它是更常见的floating point 的更简单替代方案,有时用于缺乏浮点指令的机器上。
标签: binary bits fixed-point
更具体地说,2n 位二进制数,n 位整数(包括一位符号)和 n 位小数。
我们可以表示的最小和最大的非零正数是多少?
我知道如何处理整数,但不确定分数。
【问题讨论】:
标签: binary bits fixed-point
典型的二进制定点表示是一个以 2 的恒定幂缩放的整数,因此所涉及的因素是
给定一个带符号位和2n-1 数字的二进制补码整数,正数的范围是[1..(2^(2n-1))-1],小数位数是2^-n。所以最小和最大正定点值是[1*2^-n..((2^(2n-1))-1)*2^-n]。
例如,C 的 int16_t 类型有 15 位,因此其范围是 [1..(2^15)-1] 或 [1..32767]。在这里,n 是8 使比例为2^-8 或1/256。所以缩放范围是[1/256..32767/256] 或[0.00390625..127.99609375]。您可以使用这个C++ program 来计算n 的不同值的范围,使用CNL。
【讨论】: