【刷题之路】不使用比较返回两个数中较大的值

原创 2016年06月01日 21:11:13

不使用比较只能判断两个数的差的正负,使用位运算,判断符号位即可

注意若两数一正一负,可能出现相减后溢出的情况,注意判断即可

class Compare {
public:
    int getMax(int a, int b) {
        // write code here
        if(isnegitive(a) && ispositive(b)) return b;
        if(isnegitive(b) && ispositive(a)) return a;
        int c=a-b;
        if(isnegitive(c)) return b;
        else return a;
        
    }
    bool isnegitive(int num){
        return num & (1 << (sizeof(num)*8 - 1));
    }
    bool ispositive(int num){
        return !(num & (1 << (sizeof(num)*8 - 1)));
    }
};

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

比较两个数 显示较大的那个数

  • 2013年03月13日 16:36
  • 6KB
  • 下载

一道腾讯的笔试题,不使用任何判断语句求出两个数中的较大者(即 if、if...else...、>、<、==、while等语句)

一道腾讯的笔试题,不使用任何判断语句求出两个数中的较大者(即 if、if...else...、>、 /** * @file 一道腾讯的笔试题,不使用任何判断语句求出两个数中的较大者(即 if、if...

不用任何比较判断找出两个数中较大的数

不用任何比较判断找出两个数中较大的数 【题目】   给定两个32位整数a和b,返回a和b中较大的。 【要求】   不用任何比较判断。 【解答】   这里有两种方法进行解决,两种方法原理都一...

某公司的一道面试题:最新版本号;输入两个表示版本号的字符串,返回版本较大的一个

请实现一个函数:最新版本号;输入两个表示版本号的字符串,返回版本较大的一个;版本字符串分为3断:主版本号,次版本号和编译版本号,之间用”.”分隔,前面的号更重要;比如 ”13.21” > ”5.6...

用java实现分数各种运算(加减乘除,求余,求幂,求两个数中的较大值,较小值)

用java实现分数各种运算(加减乘除,求余,求幂,求两个数中的较大值,较小值) 1,要求      用户以分数形式输入,以分数形式输出,用java语言实现分数中的各种运算(加减乘除,求余,求幂,求两个...

不用”if“,”?:“,”switch“或其他判断语句,求两个数中较大的数或较小的数

以下五种方法分别求出较大的数和较小的数的方法。较小数的代码在注释中,但未运行测试。 int Find1(int a, int b) { return ((a + b) + abs(a - b)) ...

OS 6与iPhone 5蓄势待发,App Store两个新变化或对开发者产生较大影响

iOS 6与iPhone 5蓄势待发,App Store两个新变化或对开发者产生较大影响 投递人 itwriter 发布于 2012-09-19 12:40 评论(0) 有482人阅读  原...

Zball in Tina Town(数论规律题+特判+较大数判是否为素数的正确姿势)

Link:http://acm.hdu.edu.cn/showproblem.php?pid=5391 Zball in Tina Town Time Limit: 3000/1500 MS (J...

CareerCup 17 中等难题 Q17.4 不用比较找出两数较大值

题目: 编写一个方法,找出两个数字中最大的那一个。不得使用
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【刷题之路】不使用比较返回两个数中较大的值
举报原因:
原因补充:

(最多只允许输入30个字)