У меня есть 4 двоичных разряда
Bit 3 Bit 2 Bit 1 Bit 0
Обычно ответ прост: 2 ^ 4 или 16 различных комбинаций; и это будет выглядеть примерно так:
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Однако LSB (бит 0) меняет состояние при каждой итерации.
Мне нужен алгоритм, в котором состояние бита изменяется только один раз за все итерации; то есть мне нужно, чтобы все мои биты действовали как MSB (Бит 3).
Как я могу это сделать?
Редактировать
Кажется, что большинство людей сходятся к тому, что существует только 5 возможных решений. Однако это предполагает, что есть начальная точка для значения и конечная точка. Это не имеет значения, поэтому я собираюсь дать реальный сценарий, чтобы лучше объяснить.
Предположим, у меня есть цифровой будильник, который дает мне 4 выхода. Каждый выход может быть запрограммирован на включение в определенное время и выключение в определенное время и программироваться независимо друг от друга, например. Я могу запрограммировать выход 1 так, чтобы он включался в 1 час ночи, а выходной - в 3 часа ночи, тогда как я мог запрограммировать выход 2, чтобы он включался в 7 часов вечера и выключался в 2 часа ночи. Нет ограничений на продолжительность каждого вывода.
Теперь я хочу подключить этот будильник к компьютеру и максимально приблизиться к текущему правильному времени. то есть, если часы показывают время 14:15, мой компьютер знает, что, например, будильник находится в диапазоне с 12:00 до 18:00. Я хочу быть в состоянии получить наименьший возможный диапазон. Какой наименьший возможный диапазон я могу получить?