Algorithm 4位年份和十年计数器
所以我遇到了这个问题,我想不出一个优雅的解决方案,也许有人能把我指向正确的方向。 假设我有一个4位的Algorithm 4位年份和十年计数器,algorithm,overflow,Algorithm,Overflow,所以我遇到了这个问题,我想不出一个优雅的解决方案,也许有人能把我指向正确的方向。 假设我有一个4位的计数器(这样它可以从0-15十进制数)计算经过的年数。在16年,年份计数器将溢出并重置回0,在17年年,它将是1,依此类推。我还有一个decade计数器,它的值为1到10到19,值为2到29,依此类推。 如果我有yearCounter和DeCounter信息,如何获得经过的总年数 例如,decade=1和counter=2年份=18 这类问题有名字吗?是否有一个函数可以计算从这些计数器到十年溢出的
计数器
(这样它可以从0-15
十进制数)计算经过的年数。在16年
,年份计数器将溢出并重置回0
,在17年
年,它将是1
,依此类推。我还有一个decade
计数器,它的值为1
到10
到19
,值为2
到29
,依此类推。
如果我有yearCounter和DeCounter信息,如何获得经过的总年数
例如,decade=1
和counter=2
<代码>年份=18
这类问题有名字吗?是否有一个函数可以计算从这些
计数器到十年溢出的年数
s?问题的名称是模算术;如果年不是负值,我们有
相反的公式(您正在寻找)是
其中,%
是余数,/
是整数除法
例如,如果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
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