可以用 2n 位表示的 largest/smallest 定点数是多少?
What is the largest/smallest fixed point number than can be represented in 2n bits?
更具体地说一个2n位的二进制数,n位整数(包括一位符号)和n位小数。
我们可以表示的最小和最大的非零正数是多少?
我知道如何处理整数,但不确定分数。
典型的二进制定点表示是一个整数,按 2 的常数次幂缩放,因此涉及的因数是
- 整数范围和
- 定点类型的比例。
给定一个带符号位和2n-1
位的二进制补码整数,正数的范围是[1..(2^(2n-1))-1]
,小数位数是2^-n
。所以最小和最大正定点值是 [1*2^-n..((2^(2n-1))-1)*2^-n]
.
例如C's int16_t
type has 15 digits so its range is [1..(2^15)-1]
or [1..32767]
. Here, n
is 8
making the scale 2^-8
or 1/256
. So the scaled range is [1/256..32767/256]
or [0.00390625..127.99609375]
. You can use this C++ program to calculate the range for different values of n
using CNL.
更具体地说一个2n位的二进制数,n位整数(包括一位符号)和n位小数。
我们可以表示的最小和最大的非零正数是多少?
我知道如何处理整数,但不确定分数。
典型的二进制定点表示是一个整数,按 2 的常数次幂缩放,因此涉及的因数是
- 整数范围和
- 定点类型的比例。
给定一个带符号位和2n-1
位的二进制补码整数,正数的范围是[1..(2^(2n-1))-1]
,小数位数是2^-n
。所以最小和最大正定点值是 [1*2^-n..((2^(2n-1))-1)*2^-n]
.
例如C's int16_t
type has 15 digits so its range is [1..(2^15)-1]
or [1..32767]
. Here, n
is 8
making the scale 2^-8
or 1/256
. So the scaled range is [1/256..32767/256]
or [0.00390625..127.99609375]
. You can use this C++ program to calculate the range for different values of n
using CNL.