bit count or bit set && Python3
MRAB
python at mrabarnett.plus.com
Thu Oct 25 11:18:54 EDT 2012
On 2012-10-25 15:47, Charles Hixson wrote:
> In Python3 is there any good way to count the number of on bits in an
> integer (after an & operation)?
> Alternatively, is there any VERY light-weight implementation of a bit
> set? I'd prefer to use integers, as I'm probably going to need
> thousands of these, if the tests work out. But before I can test, I
> need a decent bit counter. (shift, xor, &, and | are already present
> for integer values, but I also need to count the number of "true" items
> after the logical operation. So if a bitset is the correct approach,
> I'll need it to implement those operations, or their equivalents in
> terms of union and intersection.)
>
> Or do I need to drop into C for this?
>
There's a nice algorithm for counting the ones. It takes one iteration
per set bit:
def count_set_bits(number):
count = 0
while number:
count += 1
number &= number - 1
return count
More information about the Python-list
mailing list