这里对浮点数转定点数的技巧进行总结,不定期更新。
1、浮点乘法转定点乘法
在介绍YUV色彩空间时,发现有一个很有趣的地方。
发现 YUV444 转 RGB888 的部分,有一个整数优化运算。
在这里有:
Cr = Cr - 128
R = Y +Cr +(Cr>>2)+(Cr>>3)+(Cr>>5)
可以看出,由原先的
1.402 x ( Cr -128 )
转换为右移代替浮点数乘法。
具体转换为:
Cr = Cr -128
Cr >>2 = Cr x 0.25 ;
Cr >>3 = Cr x 0.125 ;
Cr >>5 = Cr x 0.03125 ;
0.25 + 0.125 + 0.03125 = 0.40625 约等于 0.402
后续在整数乘法时,可以采用这样的方式,右移代替小数点的乘法。