里飞网
标题:
【转发】快速除以255的方法
[打印本页]
作者:
阿里兄
时间:
2023-6-12 16:23
标题:
【转发】快速除以255的方法
经过若干次试验修改,研究出下面这个快速/255的宏,可以在 X属于[0,65536]的范围内误差为零:
#define div_255_fast(x) (((x) + (((x) + 257) >> 8)) >> 8)
传统来说,人们习惯于将 /255改为 >> 8,但是这样误差挺大的,比如先乘以255再除以255,连续做十次,如果用>>8来代替除法,那么十次之后,误差为10. 另外一种常见的近似法是((x) + 255) >> 8,这种累积误差也挺厉害的。
因此>>8代替/255结果是比较粗糙的。而这个宏的开销比起>>8来说成本大12%。
经过测试65536000次计算中,使用/255的时间是325ms, 使用div_255_fast的时间是70ms,使用>>8的时间是62ms,div_255_fast的时间代价属于可以接受的范围。
————————————————
版权声明:本文为CSDN博主「skywind」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/skywind/article/details/6755360
欢迎光临 里飞网 (http://dz.lfly.xyz/)
Powered by Discuz! X3.3