【发布时间】:2010-11-07 22:51:37
【问题描述】:
我正在寻找一种简洁的方法来列出(8 位)整数,其二进制表示与另一个整数不同,直到旋转和反射。
例如,列表可能会以
开头
0
1
(跳过 2=10b,因为您可以将位旋转 1,因此跳过 2 的所有幂。此外,除 0 之外的每个数字都是奇数)
3=11b
5=101b
7=111b
9=1001b
11=1011b(所以 13=1101b 将被跳过,因为 11010000b 是 1101b 的反射,然后可以向右旋转 4 次)
.
.
.
理想情况下,如何将其推广到具有不同位数(16、32 或仅 n)的数字以及 2 之外的其他基数。
【问题讨论】:
-
我假设 0000 0011 被认为是 1000 0001 的旋转
-
这里的答案:stackoverflow.com/questions/262826/… 可能很有启发性。
-
@高性能标记。到目前为止,您的答案是最好的。
-
我遇到的是项链问题。我只是不知道名字。我所要求的(有些人错过了)是一种列举所有项链的干净、优雅的方法。临时做这件事并不难,但分析或概括就更难了。
标签: language-agnostic math binary bit-manipulation