我有以下计算:
unsigned int a;
unsigned b = (a < 4) ? a : 4;
是否可以将第二行转换为分支自由格式?
谢谢!
最佳答案
试试这个:
b = (a >= 4) * 4 + (a < 4) * ((a >> 1) & 1) * 2 + (a < 4) * (a & 1);
说明:如果 a >= 4,我们通过将 2 个最低有效位“清零”来返回 4。如果 a < 4,我们使用这 2 个最低有效位。
关于bit-manipulation - 无分支饱和度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31036700/