成功的法则极为简单,但简单并不代表容易。
平时奇数我们一般是这样判断的。
public static boolean isOdd(int i) {
return i % 2 == 1;
}
这个方法可行吗?
所谓奇数平时被定义为被2整除余1的整数。表达式i%2计算的是除以2时所产生的余数,因此认为该方法可行。遗憾的是,他不行。因为int值有二分之一是负整数,当负数整除2得到的余数也一定是负数。该方法就是在假定传入的值都是正数才成立的。比如说-3%2=-1.
其实这个问题很容易改正:
public static boolean isOdd(int i) {
return i % 2 !=0;
}
写法二:
public static boolean isOdd(int i) {
return (i&1)!=0;
}
小结:判断奇数性不能用1来做余数判断,不能被2整除的数一定是奇数。正奇数和负奇数