此图为百度经验上的 我觉得他可能写错了,但他最后给看的运行结果 竟然没有报错!怎么回事?
http://jingyan.baidu.com/album/e4d08ffdd5b1670fd2f60dea.html?picindex=1
百度经验原址
如果是 year % 4 吧,你输出错误了,还是别人提供的源代码本身就是错误的。
按位与运算符(&)
参加运算的两个数据,按二进制位进行“与”运算。
运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0
例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。
另,负数按补码形式参加按位与运算。
“与运算”的特殊用途:
(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
(2)取一个数中指定位
方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。
例:设X=10101110,
取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;
还可用来取X的2、4、6位。
这算法误人呀
4的位码是 0000 0100,只要你的年低8位的字节码中第三位是1的闰年年份,这算法都不行,
比如2004,然后只要2004+4*2N的应该不行year&4都不等于0
year &4 --> year % 4
没必要玩弄小技巧。100%4==0就可以了。
year % 4还是靠谱
& 是按位取与的运算符
平时很少用到
&这种运算比较难理解,还是老老实实用判断比较稳妥