ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

浮点转定点

浮点转定点

一、浮点转定点说明
1.浮点转定点的核心就说把小数乘以一个2的幂次方变成整数存储;
2.基本公式‌:定点数 = 浮点数 × 2^Q,然后取整(截断或四舍五入)
3.反向转换‌:浮点数 = 定点数 ÷ 2^Q
4.关键是要先确定Q值‌,也就是小数部分占多少位,这决定了精度和表示范围
5.比如Q15格式:
16位有符号数,1位符号位+15位小数位。
浮点数0.5转定点:0.5×32768=16384。
定点16384转浮点:16384÷32768=0.5。

二、Q格式如何定义
1.先看数据范围‌:最大绝对值需要多少位整数来表示。
2.再看精度要求‌:小数部分需要多少位才能满足误差要求。
3.常用表示法‌:Qm.n格式(m位整数+n位小数)或Qn格式(n位小数,整数位自动算)

三、定点和浮点‌‌‌
浮点:小数点非固定的数,可表示数据范围较广,整数,小数都可表示。包含float,double;
定点:小数点固定,可表示整数,小数。int本质是小数点位于末尾的32位定点数而已;

浮点数(x)转换为定点数(xq):xq=(int)x* 2Q
定点数(xq)转换为浮点数(x):x=(float)xq*2-Q

Q表示 S表示 十进制数表示范围
Q15 S0.15 -1≤x≤0.9999695
Q14 S1.14 -2≤x≤1.9999390
Q13 S2.13 -4≤x≤3.9998779
Q12 S3.12 -8≤x≤7.9997559
Q11 S4.11 -16≤x≤15.9995117
Q10 S5.10 -32≤x≤31.9990234
Q9 S6.9 -64≤x≤63.9980469
Q8 S7.8 -128≤x≤127.9960938
Q7 S8.7 -256≤x≤255.9921875
Q6 S9.6 -512≤x≤511.9804375
Q5 S10.5 -1024≤x≤1023.96875
Q4 S11.4 -2048≤x≤2047.9375
Q3 S12.3 -4096≤x≤4095.875
Q2 S13.2 -8192≤x≤8191.75
Q1 S14.1 -16384≤x≤16383.5
Q0 S15.0 -32768≤x≤32767

‌‌‌

四、有符号整数的加减乘除运算
1.有符号整数的存储是以补码的形式进行
2.有符号整数的加减乘除运算也是补码的形式进行

返回列表