闰年计算
1.能被4整除而不能被100整除.(如2004年就是闰年,1900年不是)
2.能被400整除.(如2000年是闰年)
算法
public boolean isLeapYear(long year) {
return ((year & 3) == 0) && ((year % 100) != 0 || (year % 400) == 0);
}
解析
表达式(a&3)==(a%4)的值是1
因为无论a的值为多少a&3的结果只保留a的最后2位
如a的值为17,它变为二进制为10001,而3为00011,它们相与的结果只有a的1和2位数字保留下来也就是01,因为与1相与就保留原数据,与0相与就变0 如 a&1=a a&0=0
而a%4也是保留a的最后2位,因为只有最后2位的值为3,小于4,其它都>4