从2 unsigned int获取最小值

时间:2012-01-18 17:41:29

标签: c++ c algorithm bit-manipulation

我正在尝试实现一个必须从数组列表中返回最小值的函数,而不使用比较器(“==”,“!=”,“>”,“<”,“> =“,”< =“),但为了简化,我将只使用两个变量。 假设我有两个值:数字5声明为“a”而数字35声明为“b”,所以我找到了一种方法来获得最小的两个整数,但不是两个无符号整数,请参阅:

b + ((a - b) & ((a - b) >> 31));

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

便宜&俗气的解决方案:如果您使用的是32位无符号整数,则可以将它们转换为64位有符号整数,并使用上面的代码。

答案 1 :(得分:1)

类型铸造是一项昂贵的操作。我们想用bit-wise ope

来计算最小值