最大数值

题目描述

来源于 https://leetcode-cn.com/

编写一个方法,找出两个数字ab中最大的那一个。不得使用if-else或其他比较运算符。

示例:

输入: a = 1, b = 2
输出: 2

解法:

看看 a-b 的结果的符号,就可以确定 a 和 b 谁大了。

class Solution {
public:
    int maximum(int a, int b) {
        uint64_t diff = static_cast<int64_t>(a) - b;
        int k = diff >> 63; // k 要么是 0 要么是 1
        return (1-k) * a + k * b;
    }
};