【发布时间】:2020-04-06 20:32:24
【问题描述】:
有没有办法计算:
/** clipped(a - b) **/
unsigned char clipped_substract(unsigned char a, unsigned char b)
{
return a > b ? a - b : 0;
}
使用一些二进制操作而不是测试?
【问题讨论】:
-
不,没有这样的东西。你的函数有什么问题?
-
如果您使用支持 mmx 命令扩展集的 cpu 架构,您可以执行无符号饱和减法来实现此目的。其他架构可能有类似的说明。
-
@Jabberwocky 我想优化计算,测试会降低性能。
-
@Abitbol 如果您关心性能,那么您就可以配置文件。您不会“测试会降低性能,所以我不会使用测试”。这是错误的、危险的,并且会导致性能不佳的糟糕代码。再次说明,或者不要说你关心性能。
-
您应该看看生成的代码。如果您使用的是不错的编译器,那么这段代码很简单,可以很好地优化。
标签: c++ c binary-operators