You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何理解闰年判断代码中year & 3、year & 15位运算的含义

运算符含义解释

这里的单个&是按位与运算符,属于位运算符的一种,会对两个数的二进制每一位逐一运算,规则为:只有对应二进制位均为1时,该位的运算结果才为1,否则为0。

year & 3的作用

3的二进制表示为11,将年份和3做按位与运算,本质是提取年份二进制的最后两位。
当year & 3的结果为0时,说明年份二进制最后两位均为0,等价于年份可以被4整除,和常规判断的year % 4 == 0逻辑完全一致,位运算的执行效率比取模运算更高。

year & 15的作用

15的二进制表示为1111,将年份和15做按位与运算,本质是提取年份二进制的最后四位。
当year & 15的结果为0时,说明年份二进制最后四位均为0,等价于年份可以被16整除,对应year % 16 == 0的判断逻辑。

整个表达式的逻辑对应

你给出的三目运算(year & 3 || !(year % 25) && year & 15 ? 28 : 29),作用是「当年不是闰年时返回28,是闰年返回29」,和常规闰年判断规则完全对应:

  • 按照运算符优先级规则,&&优先级高于||,表达式会先计算!(year % 25) && year & 15,再和前面的year & 3做逻辑或运算
  • 当year & 3非0:说明年份不能被4整除,不是闰年,触发返回28
  • 当year & 3为0(能被4整除)时,进入后半段判断:
    • !(year % 25)为真代表年份能被25整除,结合前面已经满足的「能被4整除」条件,等价于年份能被100整除
    • 此时如果year & 15非0,说明年份不能被16整除,即年份能被100整除但不能被16*25=400整除,不是闰年,触发返回28
  • 除上述两种情况外,均为闰年,返回29

内容的提问来源于stack exchange,提问作者Ross Symonds

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 12:48:01