在TMS320C2000 Motor Control Primer中:
GLOBAL_Q Max Val Min Val Resolution
28 7.999 999 996 -8 0.000 000 004
24 127.999 999 940 -128 0.000 000 060
20 2047.999 999 046 -2048 0.000 000 954
请问一下数据范围和精度是怎么计算来的?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好!
其实Q格式很好理解的。以你提到的Q28 Q24 Q20为例。
C2000是有符号的Q格式,那么最高位31位为符号位,30—0位为数值位。
例如,Q28 , 30~28位为整数部分,27~0位为小数部分。表示小数有28位,那么分辨率 则是 1/(2^28) 。表示正数有3位,那么正数最大为 2^3- 1/(2^28) ,负数最小为 -2^3。
综上, Qn, 范围为 2^(31-n) - 1/(2^n) ~ -2^(31-n), 分辨率为 1/(2^n)。
欢迎继续提问~
你好,谢谢解答, 以下是我的计算方法,请问一下错误在哪里?
1、如Q28格式,正数最大0_111.1111 1111 1111 1111 1111 1111 1111
| | |
符号 整数 小数
于是得到最大值+7.999 999 996
2、那么是否可以这样计算:表示负的最小值为 1_111.1111 1111 1111 1111 1111 1111 1111
| | |
符号 整数 小数
算的的Q28格式的下限不就应该是-7.999 999 996么?
我这样理解的错误在哪里啊?
这是有符号数的特点,不管是小数还是正数。负数的动态范围总是比正数的动态范围大一个bit表示的数值。
例如:8bit 有符号数 范围为 127 ~ -128, 127~ 0 ~ -128 一共是256个数值。
符号位为1,其余位为零,则为最小的负数。