C语言中模运算的替代方法

迈克·沙尼(Maik Xhani)

我需要在内核中使用模运算,这会使事情变慢。我无法将其删除。基本上我有一个%b,其中b不是2的幂。有什么办法可以避免使用它?

约翰尼斯

您可以预取答案并使用查找表吗?代替

c = a%b;

然后你可以尝试

c = table[a][b];

必须对签名和表大小进行一些考虑。根据整体用例,您可以将此表移至更高级别,并仅除去一次计算即可删除更多表。

模的自定义实现将使用其定义

(a/b)*b + a%b == a; //true
a%b == a - (a/b)*b // true

根据a和b的可能值,您可以尝试对此进行优化。

根据您的目标硬件,您可以尝试查看是否有快速的硬件解决方案可以解决特定产品的问题。(参见

可能还有更多解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C语言中此switch语句的替代方法

来自分类Dev

C语言中的位运算

来自分类Dev

C语言中数组的算术运算

来自分类Dev

优化C语言中的按位运算

来自分类Dev

C语言中“ double”运算和优化

来自分类Dev

C语言中“ double”运算和优化

来自分类Dev

了解C语言中的运算符

来自分类Dev

如何在C语言中使用有限的硬件在无符号整数上实现模运算

来自分类Dev

C语言中的OpenMP方法

来自分类Dev

C语言中的OpenMP方法

来自分类Dev

叉(); C语言中的方法

来自分类Dev

使用strsep在C语言中解析字符串(替代方法)

来自分类Dev

C语言中许多情况切换语句的替代方法

来自分类Dev

C语言中的strtoull()函数是否可以替代?

来自分类Dev

C语言中的可变长度数组替代

来自分类Dev

关于C语言中的sizeof运算符的困惑

来自分类Dev

C语言中按位运算的返回类型

来自分类Dev

C语言中的'->'运算符及其用法

来自分类Dev

C语言中整数运算的中间结果使用哪种精度?

来自分类Dev

C语言中不同类型的数学运算

来自分类Dev

了解C语言中的sizeof运算符

来自分类Dev

C语言中的按位运算和掩码

来自分类Dev

C语言中的方法和结构

来自分类Dev

ASM语言中的算术运算

来自分类Dev

C语言中的图形

来自分类Dev

C语言中&&的行为

来自分类Dev

C语言中的For循环

来自分类Dev

在 C 语言中:'= { }' 运算符与普通的等号 '=' 运算符

来自分类Dev

这是C语言中接口定义的常用方法吗