美文网首页
判断一个数是否为奇数

判断一个数是否为奇数

作者: 憨憨二师兄 | 来源:发表于2020-05-08 15:26 被阅读0次

2020-5-8

今天茶足饭饱之余,在知乎上看到了一篇文章《记一道简单的java面试题》

题目为:实现一个方法,判断一个整数是否为奇数。

应试者的第一段代码:

public boolean isOdd(int i) {
    if (i % 2 == 1) {
        return true;
    } else {
        return false;
    }
}

如果应试者真的写出这样的代码,我想应该基本就挂掉了吧。这段代码的问题是应试者没有考虑到输入的整数为负数的情况。例如当输入值为-1,这段代码返回的结果为false,另外既然返回值为布尔类型,就不需要多余的if...else判断语句。代码进而可以优化为:

public boolean isOdd(int i) {
    return i % 2 != 0;
}

这样一来,既增加了可读性,也使代码具有鲁棒性。

有没有更好的方法呢?或者说是否可以不通过取模的方式来完成这个函数

奇偶的区别在于最后一位是1还是0,我们只需要位运算操作,就可以将代码简化至:

public boolean isOdd(int i) {
    return (i & 1) == 1;
}

最后,在本篇文章中作者指出:

我:“这样是不是比上面取模运算要快?”
候选人:“那当然了,位运算肯定快啊。”
我:“但是我们实际代码测试过,发现上面的按位与操作和取模操作,实际运行的时间是差不多的,为什么呢?”

作者给出的解释:


这其实也解决了我一直以来的疑惑~

相关文章

  • Day3作业

    1.使用位运算判断一个数是否是奇数注:奇数的二进制的最后一位是1,偶数是0 print('数值是否为奇数',boo...

  • 判断一个数是否为奇数

    2020-5-8 今天茶足饭饱之余,在知乎上看到了一篇文章《记一道简单的java面试题》 。 题目为:实现一个方法...

  • 2019-01-02作业

    使用位运算判断一个数是否是奇数num=47if num & 1 == 1:print('%d是奇数'%(num))...

  • 2019-01-02

    1.使用位运算判断一个数是否是奇数num & 1 ==0 num 是偶数num & 1 ==1 num 是奇数...

  • 2019-01-02作业

    1.使用位运算判断一个数是否是奇数num = int(input("输入一个数:"))if num & 1 == ...

  • Day3 作业

    1.使用位运算判断一个数是否是奇数 注:奇数的二进制的最后一位是1,偶数是0 print(n&1) 结果为1则是奇...

  • day6-作业

    1、判断一个数是奇数还是偶数 结果 2、给一个年份,判断是否是闰年 结果 3、给一个数n,计算n的阶乘 结果 //...

  • Day3 作业

    1.使用位运算判断一个数是否是奇数 注:奇数的二进制的最后一位是1,偶数是0 该数与1进行&运算,例如判断数字1是...

  • JavaScript2.0作业

    1、判断一个数是奇数还是偶数 2、给一个年份,判断是否是闰年 3、给一个数n,计算n的阶乘 4、打印99乘法表 5...

  • day26-作业

    1、判断一个数是奇数还是偶数代码 2、给一个年份,判断是否是闰年代码 3、给一个数n,计算n的阶乘代码 4、打印9...

网友评论

      本文标题:判断一个数是否为奇数

      本文链接:https://www.haomeiwen.com/subject/qfpfnhtx.html