我们需要在位于A和B之间的所有自然数中计算比特,包括在内。我在网站上遇到了这个问题,这是他们使用的方法,但我无法理解这个方法任何人都可以用一个例子更清楚地解释这个问题吗?
为了解决这个问题,我们只需要关注每个功率2的出现,结果是循环的。现在对于每个2 ^ i(循环的长度将是2 ^(i + 1),其中2 ^ i零,后跟相同数量的1)我们只需要计算在给定间隔中1是否保持不变,这样做通过简单的算术。如果是这样,答案中将出现2的幂,否则就不会出现。
答案 0 :(得分:2)
让我们用3位计数(无符号)来首先显示某些数字:
000 = 0
001 = 1
010 = 2
011 = 3
100 = 4
101 = 5
110 = 6
111 = 7
如果查看列,可以看到最低位以1的周期交替,下一个周期为2,然后是4,第n个最低位以2 ^的周期交替( N-1)。
一旦它为0,一旦它始终为0(因为0和0为0)。
如果n
和1
的{{1}}位为n
,您还可以说A
位仅为B
且1
。 换句话说,如果在开始和结束时它只有1,那么只有1,因为它的周期太大,没有时间改变为0。