java - 检查闰年 - 不使用除法运算

标签 java algorithm leap-year

如何在不使用除法运算的情况下检查给定年份是否为闰年 Java中的一些库方法。是否可以使用按位运算符进行检查?

PS:几个世纪以来都不需要验证

最佳答案

这里有一些不使用模函数识别闰年的方法。

首先,我们假设(或测试)年份在 1901 - 2099 范围内.

  • 以二进制数表示的闰年将有 00作为 最后两位数。所以:

    今年是闰年if year & (not 4) == 0

  • 如果您有一个函数可以将实数截断为 整数然后这有效:

    x = trunc(year / 4)

    今年是闰年if x * 4 == year

  • 如果你有移位(不是循环移位)运算符,我敢肯定 Verilog 则:

    x = year >> 2

    今年是闰年if (x << 2) == year

如果假设范围是 1901 - 2099是 false 那么你需要一些额外的逻辑来消除 1900, 1800, 1700 and 2100, 2200, 2300 and so on .

关于java - 检查闰年 - 不使用除法运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52158601/

相关文章:

algorithm - 功能性学习困境

.net - 基于规则/限制返回对象列表的算法

c - 如果您输入了日期并添加了一些 x 秒,如何找出闰年的数量

r - 用闰年计算一年中的天数

java - 在 Java 中返回连接字符串并检查 null 或空的最佳方法是什么?

java - CQRS 如何避免命令和事件之间的重复字段?

c# - 是否有任何算法可以根据某些模式对数组进行分类?

java - 来自 .NET Webservice 的压缩数组字节 Java

java - 目录为空时 NLST 上的 FTP 超时