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