bit-manipulation - 无分支饱和度

标签 bit-manipulation branch

我有以下计算:

 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/

相关文章:

java - 32 位整数上的 RotateLeft 操作

c - 为什么输出看起来像这样?

encoding - 二进制积分数据压缩

git - 将 GIT 与 GIT GUI 结合使用 - Master 和 Branching

git - 如何通过 API 从 SonarQube 项目中检索分支信息?

bit-manipulation - 使用按位运算符实现除法

c# - 如何使用移位运算符将字节舍入为 0 或 255

git:从另一个分支 checkout 文件到当前分支(不要将 HEAD 切换到另一个分支)

Git merge 和推送

git - 推送到远程分支以进行 pull 请求