有多种迭代n 位格雷码的方法。有些比其他的更有效率。但是,我实际上并不需要格雷码,而是希望遍历格雷码列表中更改的位索引,而不是实际的格雷码。例如,以这个 3 位格雷码列表为例:
000, 001, 011, 010, 110, 111, 101, 100
我想输出 3、2、3、1、3、2、3。这告诉我们需要更改位 3、2、3 等才能获得列表。在这里,我从 1 和左侧开始索引。
一种方法是按顺序计算格雷码,并为每个连续对 (x, y) 计算 (x XOR y) 以确定哪个位发生了变化,然后取 (x XOR y) 的整数对数基数 2。
但是我需要尽可能快的迭代,我的兴趣将是 30-40 位格雷码。
有没有一种有效的方法来做到这一点?