给定int a和intb,在不使用if-else等比较和判断运算符的情况下返回较大的那个数。若两数相同则返回任意一个。
测试样例:
1,2
返回:2
# -*- coding:utf-8 -*-
class Max:
def getMax(self, a, b):
# (a - b) >> 31 为 0, 说明 a - b 最高位为0,即a >=b
# (a - b) >> 31 为 -1, 说明 a - b 最高位为1, 即 a < b
return {0:a,-1:b}[(a-b)>>31]
public int getMax(int a ,int b){ b = a-b;//此时b>>31为1则b小于0即a<b,若b>>31为0 则a>b a- = b&(b>>31); //若a<b a=a-(a-b),若a>b a=a-0 return a; }public int[2] exchangeNum(int[2] num){ num[1] = num[0]-num[1]; num[0] = num[0]-num[1]; num[1] = num[0]+num[1]; return num; }