题解 | #获取最大值#

获取最大值

https://www.nowcoder.com/practice/d2707eaf98124f1e8f1d9c18ad487f76

不用任何判断语句和比较操作,返回两个数的最大值

(主要讲没bug的方法二)

public static int getMax2(int a, int b){

int c = a - b;

int sa = sign(a);

int sb = sign(b);

int sc = sign(c);

int diffAB = sa ^ sb;

int sameAB = diffAB ^ 1;

int returnA = diffAB * sa + sameAB * sc; (表示了所有可能a较大的情况,而且这两种表示互斥,并非代表所有情况,所以不是对立)

int returnB = returnA ^ 1;

return a * returnA + b * returnB;

}

public static int sign(int n) {

return (n >>> 31) ^ 1;

}

全部评论

相关推荐

今天 15:54
已编辑
湖南工业大学 嵌入式工程师
微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务