【发布时间】:2022-01-07 11:12:35
【问题描述】:
我知道 this question 关于在 C 中的单个操作中获取商和余数。但是 C 中的 div 和 ldiv 函数采用 int 和 long 参数。但是如何执行 unsigned 除法并将余数和商保存在 C 中?据我所知,没有unsigned 版本的div 或ldiv。我必须使用内联汇编吗?
【问题讨论】:
-
我相信 GCC 提供了一个优化标志,它会自动将使用
div和mod的上下文编译成单个指令调用。 -
我认为您不应该尝试找到一种方法来优化此级别的代码。如果您以
quotient = a / b; remainder = a % b;之类的明显方式编写操作并在编译器中启用优化,您可以假设编译器将为您的目标处理器生成最佳代码。如果你真的发现你的编译器优化不够,你可能会使用汇编代码。
标签: c performance division micro-optimization unsigned-integer