Apropos

logcountFunction

    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
    Exceptional Situations

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

    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))