4-битный счетчик года и десятилетия - PullRequest
0 голосов
/ 27 августа 2018

Итак, я столкнулся с этой проблемой и не могу придумать элегантного решения, может быть, кто-то может указать мне правильное направление.Скажем, у меня есть 4 бит counter (так что он может считать от 0-15 в десятичном виде) в течение прошедшего года.В году 16 счетчик года переполнится и вернется к значению 0, в году 17 это будет 1 и так далее.У меня также есть счетчик decade, который будет иметь значение 1 для лет 10 до 19, значение 2 для лет 20 до 29 и так далее.Как я могу получить общее количество прошедших лет, если у меня есть данные yearCounter и decadeCounter?

Например, decade = 1 и counter = 2;year = 18.

Есть ли имя для такого рода проблем?И есть ли функция, которая может вычислить количество year с от этих counter с до decade переполнений?

1 Ответ

0 голосов
/ 27 августа 2018

Название проблемы: по модулю арифметики ;при условии, что 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...