[fpc-pascal] Bitcounting

Jeppe Johansen jeppe at j-software.dk
Sat Mar 5 19:20:03 CET 2016


The PopCount functions do exactly that.

On 03/05/2016 07:03 PM, Bart wrote:
> Hi,
>
> Does FreePascal have a routine for counting bits?
> So that e.g. BitCount(%1001100100001) gives 5 (number of bits that are 1)?
>
> I came up with (extracted from IntToBin()):
>
> function BitCount(N: Int64): Integer;
> var
>    Q: QWord;
>    i: Integer;
> begin
>    Result := 0;
>    Q := QWord(N);
>    for i := 0 to (8 * SizeOf(N) - 1) do
>    begin
>      if ((Q and 1) = 1) then Inc(Result);
>      Q := Q shr 1;
>    end;
> end;
>
> Surely this can be done better?
>
> Bart
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
>




More information about the fpc-pascal mailing list