C, 33 bytes
I just saw the challenge today, but thought of a recursive solution.
B(n){return (n&1)+(n?B(n/2):0);};
Edited to note that I assumed it was a smallest size challenge. The speed is linear to the number of bits required to contain the number. O(N) = k * Log2(N).