4 位年和十年计数器
4 bit Year and decade counter
所以我遇到了这个问题,但我想不出一个优雅的解决方案,也许有人可以指出正确的方向。
假设我有一个 4 位 counter
(因此它可以从 0-15
以十进制计算)经过的年数。在 16
年,年计数器将溢出并重置回 0
,在 17
年,它将是 1
,依此类推。我还有一个 decade
计数器,10
到 19
年的值是 1
,20
到 [=] 年的值是 2
22=] 等等。
如果我有 yearCounter 和 decadeCounter 信息,我怎样才能得到经过的总年数?
例如decade = 1
和 counter = 2
; year = 18
.
这种问题有名称吗?是否有一个函数可以从这些 counter
到 decade
溢出计算 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
所以我遇到了这个问题,但我想不出一个优雅的解决方案,也许有人可以指出正确的方向。
假设我有一个 4 位 counter
(因此它可以从 0-15
以十进制计算)经过的年数。在 16
年,年计数器将溢出并重置回 0
,在 17
年,它将是 1
,依此类推。我还有一个 decade
计数器,10
到 19
年的值是 1
,20
到 [=] 年的值是 2
22=] 等等。
如果我有 yearCounter 和 decadeCounter 信息,我怎样才能得到经过的总年数?
例如decade = 1
和 counter = 2
; year = 18
.
这种问题有名称吗?是否有一个函数可以从这些 counter
到 decade
溢出计算 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