algorithm - 没有大于或小于运算符的更大值

标签 algorithm max

这只是为了好玩。

你能给我一个确定两个数字中较大值的方法吗?您可以使用除大于或小于运算符之外的其他运算符。

使用您喜欢的任何工具(编程语言、铅笔纸等)。 还有一件事你不能做以下事情:

int main()
{
    int num1, num2;
    cin >> num1 >> num2;

    if( (num1-num2) + abs(num1-num2) )
        cout << num1 << " is bigger" << endl;
    else 
        cout << num2 << " is bigger" << endl;
    return 0;
}

最佳答案

好吧,如果你假设二进制补码算法:

int highBit = ~INT_MAX;
int rslt = num1 - num2;

if (rslt & highBit)
    // num2 > num1
else if (rslt)
    // num1 > num2
else
    // num1 == num2

这仅在两个数字均为正数时才有效。例如,如果 num1 为正而 num2 为负,则 num1-num2 可能溢出,导致结果为负,这将错误地报告 num2 > num1。如果两个数字都是负数,这将报告相反的情况(即 -12 将报告为大于 -1)。

关于algorithm - 没有大于或小于运算符的更大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6031829/

相关文章:

algorithm - 什么函数伪随机地重新排序 N 个项目?

sql - 选择最大计数

python - 每次值列表中的符号变化时计算差异

MySQL查询: SUM/MAX problem

algorithm - 有没有数据结构可以实现一个数相加并查询最小k个数的和?

c# - 在 C# 中将字符强行插入文本框

algorithm - SICP 2.16 区间算术(方案)

string - 字符串处理算法

java - 在数组中找到最大值的预期赋值次数

java - 为什么我的数组类无法找出随机生成的数组的最小值和最大值?