Если вы выполняете код в узком цикле, вполне возможно, что вы увидите, что производительность будет уменьшаться при увеличении числа num, я предполагаю , что ваш компилятор C ++ не способеннайдите нативную инструкцию для выполнения & с длинным длинным без знака - так как вы указали, что получаете замедление для каждой степени два, то я ожидаю, что код, полученный в результате &, многократно «делит число» на 2 доэто ноль и выполнение и побитовое.
Другая возможность состоит в том, что процессор, на котором вы работаете, хромает и не выполняет AND в фиксированном количестве циклов.