それはビット数を数える有名なテクニック >>616

一時、ループ使うと、最後に予測分岐が外れて大きなペナルティを払ってたから
ループ使わないテクニックがいろいろ作られたんだ

どうせやるなら、(x & x-1)の結果で0/-1を作って (ただ要アセンブラか)
最後にor して return すれば 完全な定クロックルーチンに出来るぞ >>607