绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
菜鸟、普通、老鸟程序猿如何写奇数判断?--位操作符妙用
2019-12-27 10:32:25

背景:

在进行程序开发时,经常需要通过判断一个整数是奇数还是偶数,来实现一些特殊的效果和功能,例如,让表格的奇数行显示一种背景颜色,偶数行显示另一种背景颜色。那么该如何判断一个整数是奇数还是偶数呢?

让我们来看一下不同的程序猿都是怎么反应:

1. 菜鸟程序猿

 

代码就是一个撸字:

publicclass TestOdd {

publicstaticvoid main(String[] args) {

intoddNum=153;

System.out.println(isOdd(oddNum));

intevenNum=9284;

System.out.println(isOdd(evenNum));

}

publicstaticbooleanisOdd(int i){

returni % 2 == 1;

}

}

 

搞定!

2. 普通程序猿

上面的代码一看就是菜鸟写的,都没有考虑int的取值范围,看老孙俺的!

 

publicclass TestOdd {

publicstaticvoid main(String[] args) {

/** * A constant holding the minimum value an {@code int} can

* have, -2<sup>31</sup>.

@Native public static final int MIN_VALUE = 0x80000000;

* A constant holding the maximum value an {@code int} can

* have, 2<sup>31</sup>-1.

@Native public static final int MAX_VALUE = 0x7fffffff;

*/intoddNum=Integer.MAX_VALUE;

System.out.println(isOdd(oddNum));

intevenNum=Integer.MIN_VALUE;

System.out.println(isOdd(evenNum));

}

publicstaticbooleanisOdd(int i){

returni % 2!=0;//如果一个数是偶数,就算是负数整除2余数也为0 }

}

 

老鸟程序猿

 

现在的年轻人都不懂的珍惜呀!%2 很浪费资源的,使用&比较省事。

publicclass TestOdd {

publicstaticvoid main(String[] args) {

/** * A constant holding the minimum value an {@code int} can

* have, -2<sup>31</sup>.

@Native public static final int MIN_VALUE = 0x80000000;

* A constant holding the maximum value an {@code int} can

* have, 2<sup>31</sup>-1.

@Native public static final int MAX_VALUE = 0x7fffffff;

*/intoddNum=Integer.MAX_VALUE;

System.out.println(isOdd(oddNum));

intevenNum=Integer.MIN_VALUE;

System.out.println(isOdd(evenNum));

}

publicstaticbooleanisOdd(int i){

return(i & 1)!=0;//1的十六进制为0x00000001,本质是取二进制的后一位的值 }

}

 

 

另外记住:除法的话,如是2的x次方的话,使用移位更快哦。

总结:

判断奇数和偶数在实际生产和生活中也经常使用,具有重大意义,因此程序中也经常需要对奇数和偶数进行处理,例如在使用循环输出信息时,可以在循环变量是奇数时,输出一种符号,是偶数时输出另一种符号。

 

分享好友

分享这个小栈给你的朋友们,一起进步吧。

JAVA玩具小屋
创建时间:2019-08-16 16:54:49
分享程序开发方面的小经验,思考一些比较简单易懂的技术问题
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • Yios5092
    栈主

小栈成员

查看更多
  • 栈栈
  • coyan
  • 25minutes
  • ?
戳我,来吐槽~