题目:最大值数
要求:编写一个方法,找出两个数字a和b中最大的那一个。不得使用if-else或其他比较运算符。
示例:
输入: a = 1, b = 2
输出: 2
class Solution {
public:
int maximum(int a, int b) {
int maximum(int a, int b) {
long c = a, d = b;
int k = 1 + ((c - d) >> 63);
return k * a + (!k) * b;
}
};
注意
1.两个int相减若用int保存可能会溢出, 故用long保存结果(64位)
2.计算机中是算数右移, 高位补符号位, 所以负数右移63位结果是-1