浮点数与定点数相互转换(仅考虑正数情况)
1. 浮点数转换为定点数
定点数总位宽设为 \(W\) ,小数部分字长设为 \(F\)
那么,考虑一个浮点数 \(a\) ,将其转换为定点数的操作为:
-
一: 计算 \(b = a \times 2^{F}\) ;
-
二: 将 \(b\) 化为整数 \(^*\) ;
-
三: 用二进制将 \(b\) 表示成 \(c\);
-
四: 用 \(N\) 位二进制数表示 \(c\) 成 \(c = (N-W-1)QF\) 或者 \(c = \text{fix}(1,N,F)\) \(^{**}\)。
\(^*\)可以是去尾法,四舍五入法,向下取整法等保留整数部分
\(^{**}\)\(N \ge W\) ,其中,当 \(N > W\) 时,高位的 \(N-W\) 位用零补齐,注意符号位;低 \(F\) 位位小数位;表示方法为定点数典型表示法:
XQN表示法
和fix()表示法
\[\begin{flalign}
&\ \text{Step1: } b = a \times2^F \\
&\ \text{Step2: } b = \text{round}(b) \\
&\ \text{Step3: } c = \text{dec2bin}(b) \\
&\ \text{Step3: } c = (N-W-1)QF
\end{flalign}
\]
2. 定点数转换为浮点数
已知一位宽为 \(N\) ,小数字长为 \(F\) 的二进制小数\(c\),那么其所指代的浮点数 \(a\) 为:
\[a= \text{bin2dec}(c)/2^F
\]
学习参考链接: