Здравствуйте, vsb, Вы писали:
vsb>Если есть задача получить число вида 0b11111 например с 5-ю единицами, т.е. на входе 5, на выходе 0b11111 = 31, это легко сделать формулой (1 << 5) — 1 (или 2^5 — 1). Можно ли придумать похожую простую формулу, если нужно "полосатое" число с чередующимися битами,
(1 << (n + 1)) / 3
А если размер числа ограничен чем-то естественным, например длиной регистра, то лучше будет работать банальный подход навроде такого:
0xAAAAAAAA >> (32 - n)