【发布时间】:2010-05-19 12:23:21
【问题描述】:
我正在尝试创建一个循环,该循环遍历所有不同的整数,其中最后 40 位中的 10 位设置为高,其余设置为低。原因是我有一张包含 40 个不同值的地图,我想将其中 10 个值相乘的所有不同方式相加。 (这只是出于好奇,所以真正感兴趣的是“bitmanip”循环,而不是总和。)
如果我要这样做,例如4位中的2位,手动设置很容易,
0011 = 3,
0101 = 5,
1001 = 9,
0110 = 6,
1010 = 10,
1100 = 12,
但是 40 人中有 10 人我似乎无法找到有效生成这些的方法。我尝试从 1023 开始(= 1111111111 二进制),找到了一种操作它的好方法,但没有成功。我一直在尝试在 C++ 中做到这一点,但它确实是令人感兴趣的通用方法(如果有的话)。我做了一些谷歌搜索,但收效甚微,如果有人有一个好的链接,那当然也会受到赞赏。 :)
【问题讨论】:
标签: c++ bit-manipulation