我正在尝试实现一个必须从数组列表中返回最小值的函数,而不使用比较器(“==”,“!=”,“>”,“<”,“> =“,”< =“),但为了简化,我将只使用两个变量。 假设我有两个值:数字5声明为“a”而数字35声明为“b”,所以我找到了一种方法来获得最小的两个整数,但不是两个无符号整数,请参阅:
b + ((a - b) & ((a - b) >> 31));
任何人都可以帮助我吗?
答案 0 :(得分:3)
便宜&俗气的解决方案:如果您使用的是32位无符号整数,则可以将它们转换为64位有符号整数,并使用上面的代码。
答案 1 :(得分:1)
类型铸造是一项昂贵的操作。我们想用bit-wise ope
来计算最小值