4 位年和十年计数器

4 bit Year and decade counter

所以我遇到了这个问题,但我想不出一个优雅的解决方案,也许有人可以指出正确的方向。 假设我有一个 4 位 counter(因此它可以从 0-15 以十进制计算)经过的年数。在 16 年,年计数器将溢出并重置回 0,在 17 年,它将是 1,依此类推。我还有一个 decade 计数器,1019 年的值是 120 到 [=] 年的值是 2 22=] 等等。 如果我有 yearCounter 和 decadeCounter 信息,我怎样才能得到经过的总年数?

例如decade = 1counter = 2year = 18.

这种问题有名称吗?是否有一个函数可以从这些 counterdecade 溢出计算 year 的数量?

题名是模运算;假设 year 不是 负数 我们有

 decade  = year / 10
 counter = year % 16

反向公式(您正在寻找的)是

 year = decade * 10 + (16 - (decade * 10) % 16 + counter) % 16

其中 % 余数 / 整数除法 .

例如,如果 year = 2018 我们有

decade  = 2018 / 10 = 201
counter = 2018 % 16 = 2

逆向公式给出

year = 201 * 10 + (16 - (201 * 10) % 16 + 2) % 16 =
       2010 + (16 - 2010 % 16 + 2) % 16 =
       2010 + (16 - 10 + 2) % 16 =
       2010 + 8 % 16 =
       2010 + 8 =
       2018