Иногда бывает надо проверить, что переданный аргумент — есть степень двойки, ну там например в конструкторе хэш-таблицы для начального размера. Не знаю, может это и известный приём, но я раньше мучился со вспомогательными функциями.
assert((size & (size - 1)) == 0);
з.ы. 0 тоже определяет как степень двойки
Здравствуйте, remark, Вы писали:
R>
А вот CT возведение в степень. может кому надо будет
template <long num, size_t n, size_t y = 1>
struct pow
{
enum { value = pow<num * num, (n >> 1), n & 1 ? num * y : y>::value };
};
template <long num, size_t y>
struct pow<num, 0, y>
{
enum { value = y };
};
Здравствуйте, wander, Вы писали:
Биты кручу верчу запутать хочу
Здравствуйте, alsemm, Вы писали:
A>Здравствуйте, wander, Вы писали:
A>Биты кручу верчу запутать хочу\
Это как раз ссылка, которая сразу пришла в голову. Хорошая ссылка. Всем также советую. Если забудете адрес, гуглится по "bit hacks".