我有 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 点关闭。每个输出可以保持多长时间没有限制。
现在我想把这个闹钟挂在电脑上,尽可能接近当前的正确时间。例如,如果时钟显示时间是下午 2:15,我的电脑就知道闹钟在下午 12 点到下午 6 点的范围内。我希望能够获得尽可能小的范围。我能得到的最小范围是多少?