Я пытаюсь создать цикл, который проходит по всем разным целым числам, где ровно 10 из последних 40 битов установлены в верхние, а остальные - в низкие. Причина в том, что у меня есть карта с 40 различными значениями, и я хочу суммировать все различные способы умножения десяти из этих значений. (Это просто из любопытства, поэтому интерес представляет именно «битовый манипулятор», а не сумма как таковая.)
Если бы я делал это, например, 2 из 4 битов, было бы легко установить все вручную,
0011 = 3,
0101 = 5,
1001 = 9,
0110 = 6,
1010 = 10,
1100 = 12,
, но с 10 из 40 я не могу найти способ для их эффективного создания. Я попытался, начиная с 1023 (= 1111111111 в двоичном формате), найти хороший способ манипулировать этим, но безуспешно. Я пытался сделать это в C ++, но это действительно общий метод (если есть), который представляет интерес. Я немного погуглил, но с небольшим успехом, если у кого-то есть хорошая ссылка, это, конечно, тоже будет оценено. :)