#

Function LOGCOUNT

Syntax:

logcount integer => number-of-on-bits

Arguments and Values:

integer---an integer.

number-of-on-bits---a non-negative integer.

Description:

Computes and returns the number of bits in the two's-complement binary representation of integer that are `on' or `set'. If integer is negative, the `0` bits are counted; otherwise, the `1` bits are counted.

Examples:

     (logcount 0) =>  0
     (logcount -1) =>  0
     (logcount 7) =>  3
     (logcount  13) =>  3 ;Two's-complement binary: ...0001101
     (logcount -13) =>  2 ;Two's-complement binary: ...1110011
     (logcount  30) =>  4 ;Two's-complement binary: ...0011110
     (logcount -30) =>  4 ;Two's-complement binary: ...1100010
     (logcount (expt 2 100)) =>  1
     (logcount (- (expt 2 100))) =>  100
     (logcount (- (1+ (expt 2 100)))) =>  1

Side Effects: None.

Affected By: None.

Exceptional Situations:

Should signal type-error if its argument is not an integer.

See Also: None.

Notes:

Even if the implementation does not represent integers internally in two's complement binary, logcount behaves as if it did.

The following identity always holds:

        (logcount x)
     ==  (logcount (- (+ x 1)))
     ==  (logcount (lognot x))

Copyright 1996-2005, LispWorks Ltd. All rights reserved.