谢谢各位大神的建议,我现在可以用到Gosper's Hackw产生我需要的bit组合。
我现在有个更进阶的问题。
我想要根据1 bit的count来排例n bits的数字,但不用sorting。
举例,当n=3时。我希望数字排例如下。当我要读第4个数字时,我会拿到3。
1, 2, 4, "3", 5, 6, 7
[001, 010, 100, 011, 101, 110, 111]
Code 可能如下。
unsigned x = get_kth_number_by_count_of_1_bits(k /*4*/, numer_of_bits /*3*/);
我现在是用gosper hackw先产生一个look up table。
但我希望可以不用look up table,直接透过bit operation或数学运算,
在constant time,拿到我所要的数字。