package expressionPuzzles;
/**
* 下面的方法是错误的,因为当i为负的奇数的时候,%取余得到的是-1;
* @author xixizhao
*
*/
public class OddPuzzle {
/**
* @param args
*/
public static void main(String[] args) {
test(10);
test(-4);
test(-3);
}
/**
* 确定输入的i是否为奇数
* @param i
* @return
*/
public static boolean isOdd(int i) {
return i%2 == 1;
}
/**
* 改进方法1
* @param i
* @return
*/
private static boolean isOdd1(int i) {
// TODO Auto-generated method stub
return i % 2 != 0;
}
/**
* 性能更好的方法2;利用位比较运算绝对比利用操作符效率高。
* 任何奇数的二进制的最低位都是1,同理,任何偶数的二进制末尾总是0;
* @param i
* @return
*/
private static boolean isOdd2(int i) {
return (i & 1) != 0;
}
private static void test(int j) {
// TODO Auto-generated method stub
System.out.println(isOdd(j));
}
}